NSURLRequest setHTTPBody以服务器的参数结束

时间:2012-02-27 02:44:03

标签: iphone ios https nsurlrequest

我正在尝试向我的服务器发送POST请求,一切似乎都运行良好,但是所有的HTTPBody都在服务器端的请求参数中结束。

服务器上有一个自签名证书,它会生成我当前忽略的AuthenticationChallenge,也可以正常工作。

然而,正如我上面所述,postBodyData最终在服务器上的错误位置。我正在使用的代码如下所示,并记录在NSURLRequest下的Apples ios文档库中。

[request setHTTPMethod: @"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[request setHTTPBody:postBodyData];

任何帮助,建议或示例都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您还需要在请求标头中传递已发布数据的Content-Length。你应该添加:

NSString *postLength = [NSString stringWithFormat:@"%d", [postBodyData length]];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];

答案 1 :(得分:0)

好的,已经找到了问题。 因为我发送了二进制数据,所以内容类型错误,一旦我传入一个空字符串就可以了。

但是我不希望没有设置内容类型,所以我找到了一个适用于此的MIME类型,如下所示。

[request setValue:@"application/octet-stream" forHTTPHeaderField:@"content-type"];