POST with NSURLConnection - NO JSON

前端 未结 3 908
攒了一身酷
攒了一身酷 2021-02-06 17:35

I am trying to write an iPhone app in Objective-C. I need to POST data using NSURLConnection. Every example I can find deals with JSON; I do not need to use JSON. All I need to

3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-02-06 18:09

    Here's how to create an ordinary post.

    First create a request of the right type:

    NSURL *URL = [NSURL URLWithString:@"http://example.com/somepath"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
    request.HTTPMethod = @"POST";
    

    Now format your post data as a URL-encoded string, like this:

    NSString *params = @"param1=value1¶m2=value2&etc...";
    

    Remember to encode the individual parameters using percent encoding. You can't entirely rely on the NSString stringByAddingPercentEscapesUsingEncoding method for this (google to find out why) but it's a good start.

    Now we add the post data to your request:

    NSData *data = [params dataUsingEncoding:NSUTF8StringEncoding];
    [request addValue:@"8bit" forHTTPHeaderField:@"Content-Transfer-Encoding"];
    [request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request addValue:[NSString stringWithFormat:@"%i", [data length]] forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:data];
    

    And that's it, now just send your request as normal using NSURLConnection (or whatever).

    To interpret the response that comes back, see Maudicus's answer.

提交回复
热议问题