NSURLRequest HTTPBody为null

时间:2014-09-30 01:34:14

标签: ios objective-c post nsurlrequest nsurlsession

我一直在尝试使用NSURLSession向服务器发送POST请求(我知道使用Postman工作)。

我按如下方式创建请求:

NSMutableURLRequest *request = [self createRequestWithPath:[self getPathForEndpoint:endpoint]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:params];

params是从序列化参数字符串(我知道是合法参数字符串)创建的,如下所示:

NSData *params = [[self serialiseParameters:data] dataUsingEncoding:NSUTF8StringEncoding];

(作为参考,序列化参数字符串类似于@"title=MyTitle&somethingElse=0"

通过搜索SO和其他地方,这似乎是设置请求的正确方法,以便NSURLSession可以POST数据,但服务器在HTTP正文中没有显示任何内容。< / p>

还有另一种POST数据的方法吗?

1 个答案:

答案 0 :(得分:0)

通过完全不使用设置者setHTTPBody并使用NSJSONSerialization来修复此问题。工作代码如下所示:

// Encode parameters
NSData *postData = [NSJSONSerialization dataWithJSONObject:data options:0 error:nil];

// Construct request
NSMutableURLRequest *request = [self createRequestWithPath:[self getPathForEndpoint:endpoint]];
request.HTTPMethod = @"POST";
request.HTTPBody   = postData;

之前我曾尝试使用此功能,但出于某种原因,当我使用[request setHTTPBody]时,它无法正常工作,设置属性直接解决了这个问题。