我需要从我的iphone应用程序向服务器发送一些详细信息。
我的详细信息为separate arrays of ID,name,quantity
和strings 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请求中?
答案 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