Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AFNetworking Post Request

I'm a newbie in obj-c and have been using asihttp for some of my projects. When doing a post request in asihttp its done this way.

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];     [request setPostValue:height forKey:@"user[height]"];     [request setPostValue:weight forKey:@"user[weight]"];     [request setDelegate:self];     [request startAsynchronous]; 

How would go about doing this is AFNetworking with a code example ?
I already got the get Json getrequest working in AFNetworking but this post request is giving me some problems. Thanks for help in advance.

like image 641
Sam Barnet Avatar asked Oct 01 '11 22:10

Sam Barnet


2 Answers

It's first worth adding (as this answer is still popular 6 years after I initially wrote it...) that the first thing you should consider is whether you should even use AFNetworking. NSURLSession was added in iOS 7 and means you don't need to use AFNetworking in many cases - and one less third party library is always a good thing.

For AFNetworking 3.0:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; NSDictionary *params = @{@"user[height]": height,                          @"user[weight]": weight}; [manager POST:@"https://example.com/myobject" parameters:params progress:nil success:^(NSURLSessionTask *task, id responseObject) {     NSLog(@"JSON: %@", responseObject); } failure:^(NSURLSessionTask *operation, NSError *error) {     NSLog(@"Error: %@", error); }]; 

For AFNetworking 2.0 (and also using the new NSDictionary syntax):

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; NSDictionary *params = @{@"user[height]": height,                          @"user[weight]": weight}; [manager POST:@"https://example.com/myobject" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {     NSLog(@"JSON: %@", responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) {     NSLog(@"Error: %@", error); }]; 

If you are stuck using AFNetworking 1.0, you need to do it this way:

NSURL *url = [NSURL URLWithString:@"https://example.com/"]; AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];  NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:                         height, @"user[height]",                         weight, @"user[weight]",                         nil]; [httpClient postPath:@"/myobject" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {     NSString *responseStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];     NSLog(@"Request Successful, response '%@'", responseStr); } failure:^(AFHTTPRequestOperation *operation, NSError *error) {     NSLog(@"[HTTPClient Error]: %@", error.localizedDescription); }]; 
like image 76
JosephH Avatar answered Sep 29 '22 12:09

JosephH


NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:                        height, @"user[height]",                        weight, @"user[weight]",                        nil];  AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:                                              [NSURL URLWithString:@"http://localhost:8080/"]];  [client postPath:@"/mypage.php" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {      NSString *text = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];      NSLog(@"Response: %@", text); } failure:^(AFHTTPRequestOperation *operation, NSError *error) {      NSLog(@"%@", [error localizedDescription]); }]; 
like image 20
Alex L Avatar answered Sep 29 '22 11:09

Alex L