AFNetworking Post Request AFNetworking Post Request ios ios

AFNetworking Post Request


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);}];


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]);}];


Here is a simple AFNetworking POST I'm using. To get up and running afterreading the AFNetworking doc, wkiki, ref, etc, I learned a lot byfollowing http://nsscreencast.com/episodes/6-afnetworking and understandingthe associated code sample on github.

 // Add this to the class you're working with - (id)init {}    _netInst = [MyApiClient sharedAFNetworkInstance];  // build the dictionary that AFNetworkng converts to a json object on the next line  //  params = {"user":{"email":emailAddress,"password":password}};  NSDictionary *parameters =[NSDictionary dictionaryWithObjectsAndKeys:                             userName, @"email", password, @"password", nil];  NSDictionary *params =[NSDictionary dictionaryWithObjectsAndKeys:                         parameters, @"user", nil];   [_netInst postPath: @"users/login.json" parameters:params      success:^(AFHTTPRequestOperation *operation, id jsonResponse) {        NSLog (@"SUCCESS");        // jsonResponse = {"user":{"accessId":1234,"securityKey":"abc123"}};        _accessId = [jsonResponse valueForKeyPath:@"user.accessid"];        _securityKey = [jsonResponse valueForKeyPath:@"user.securitykey"];        return SUCCESS;      }      failure:^(AFHTTPRequestOperation *operation, NSError *error) {        NSLog(@"FAILED");        // handle failure        return error;      }   ];