我一直在尝试使用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数据的方法吗?
答案 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]
时,它无法正常工作,设置属性直接解决了这个问题。