iPhone:Http POST请求

时间:2012-02-26 10:12:03

标签: iphone objective-c ios http-post nsurlrequest

我需要从我的iphone应用程序向服务器发送一些详细信息。

我的详细信息为separate arrays of ID,name,quantitystrings with name,address,phone & email

我需要将NSmutable数组数据更改为此JSON格式

      [
            {"id":"139","name":"Samosa","quantity":"332","spice":"hot"},
            {"id":"149","name":"rice","quantity":"4","spice":"mild"},
            .....
      ]

我的疑问是[request setHTTPMethod:@"POST"];
以上行是否足以设置POST请求。

如何将上述详细信息添加到POST请求中?

3 个答案:

答案 0 :(得分:1)

还不够。您还需要(最低):

NSString *your_request_string = @"the thing in JSON format";
NSData *your_data = [your_request_string dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:your_data];

答案 1 :(得分:1)

使用JSON序列化程序。您可以使用SBJSON。使用SBJSON,代码将如下所示:

SBJsonWriter *jsonWriter = [[[SBJsonWriter alloc] init] autorelease];
NSString *jsonParams = [jsonWriter stringWithObject:<your-NSArray>];

将此jsonParams添加到POST:

NSString *postData = [jsonParams stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:postURL];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[postData dataUsingEncoding:NSUTF8StringEncoding]];

答案 2 :(得分:1)

使用setHTTPBody:将发布数据添加到HTTP请求对象中 使用NSJSONSerialization序列化您的数组。

NSMutableArray *array = getSomeArray();
NSError *err;
NSData *json;

json = [NSJSONSerialization dataWithJSONObject:array options:0 error:&err];
if (err) {
    // handle error
}

NSURL *url = getSomeURL();
NSMutableURLRequest *req;

req = [NSMutableURLRequest requestWithURL:url];
[req setHTTPMethod:@"POST"];
[req setHTTPBody:json];

// send your request