POST with NSURLConnection - NO JSON

前端 未结 3 913
攒了一身酷
攒了一身酷 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&param2=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.

    0 讨论(0)
  • 2021-02-06 18:10

    You can use the following NSURLConnection method if you target ios 2.0 - 4.3 (It seems to be deprecated in ios 5)

    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
      NSString * string = [[NSString alloc] initWithData:data encoding:
                           NSASCIIStringEncoding];
    
      if (string.intValue == 1) {
    
      } else {
    
      }
    }
    
    0 讨论(0)
  • 2021-02-06 18:12

    I've a very similar situation to whitebreadb. I'm not disagreeing with the answers submitted and accepted but would like to post my own as the code provided here didn't work for me (my PHP script reported the submitted parameter as a zero-length string) but I did find this question that helped.

    I used this to perform a posting to my PHP script:

    NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.myphpscriptlocation.net/index.php?userID=%@",self.userID_field.stringValue]];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
    request.HTTPMethod = @"POST";
    NSURLConnection *c = [NSURLConnection connectionWithRequest:request delegate:self];
    
    0 讨论(0)
提交回复
热议问题