2013-02-01 170 views
0

我试图端口一个卷曲的请求:curl命令翻译成NSMutableUrlRequest

curl -X POST -H [header stuff] -d '{"key":"value"}' [host] 

成NSMutableUrlRequest。到目前为止,我已经剥离了什么工作正常,只保留导致我麻烦的事情,即-d'{“key”:“value”}'。另一个头部分很好。

根据卷曲手册-d意味着该有效载荷在应用/ X WWW的form-urlencoded格式发送的,所以我做了以下:

NSString* post = @"{\"key\":\"value\"}"; 
    NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]; 
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 
    [_request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [_request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    [_request setHTTPMethod:@"POST"]; 
    [_request setHTTPBody:postData]; 

这将返回以下错误

失败,错误错误域= AFNetworkingErrorDomain代码= -1011“预期的状态代码在(200-299),得到400”UserInfo = 0xa363550 {NSLocalizedRecoverySuggestion = {“代码”:107,“错误”:“坏www-form-urlencoded数据“}

任何一个人都可以指向正确的方向调试这个东西? -A

回答

1

Content-Type应该是application/json或者也许是text/plain。如果一切都失败,请尝试application/octet-stream(原始二进制数据)。

+0

你完全正确!它现在像一个魅力:) – Alex

+0

@亚历克斯它是哪一个? – 2013-02-01 14:47:01

+0

解决方案适用于那些感兴趣的人[_request setValue:@“application/json”forHTTPHeaderField:@“Content-Type”]; – Alex