Archive for 14th February 2013

Migrating ASIHTTPRequest to AFNetworking (submit to a URL with POST variables)

For my third and final AFNetworking migration series of posts, let us consider calling a web service URL with POST variables.

Here was the ASIHTTPRequest code:

    NSMutableString *fileURL = [NSMutableString stringWithString:THE_URL];
    NSURL *url = [NSURL URLWithString:fileURL];
    __block ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setDelegate:self];
    [request addRequestHeader:@"Content-Type" value:@"application/json; charset=utf-8"];
    [request setRequestMethod:@"POST"];
    [request setPostValue:theID forKey:@"id"];
    [request setCompletionBlock:^{
        NSLog(@"success with response string %@", request.responseString);
    }];
 
    [request setFailedBlock:^{
        NSLog(@"error: %@", request.error.localizedDescription);
    }];
 
    [request startAsynchronous];

And here is the corresponding AFNetworking code:

    NSMutableString *fileURL = [NSMutableString stringWithString:THE_URL];
    AFHTTPClient *client = [[[AFHTTPClient alloc] initWithBaseURL:url] autorelease];
    NSDictionary *params = @ { @"id" : theID };
    NSMutableURLRequest *request = [client requestWithMethod:@"POST" path:fileURL parameters:params];
    AFHTTPRequestOperation *op = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
    [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"success with response string %@", operation.responseString);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"error: %@", error.localizedDescription);
    }];
    [op start];

BTW, Happy Valentine’s Day to one and all.