iOS - REST客户端工作正常,而NSURLRequest返回NULL

时间:2013-05-07 14:22:26

标签: ios json rest httprequest

我正在尝试通过GET HTTP请求从云端下载文件,在我的REST客户端(Postman for Chrome)中,我得到了预期的结果,但是当我在iOS中传递请求时,我得到一个NULL响应。可能是什么问题?

在我的REST客户端中,我将URL作为http://myserver.com/api/download.json?filepath=/&fileid=document:1pLNAbof_dbXGn43GtMNafABMAr_peTToh6wEkXlab7U&filename=My Info.doc传递给授权密钥的标题字段,它完全正常。 在iOS中,如果我做这样的事情:

[request setURL:[NSURL URLWithString:URLString]]; // I tried even to hardcode the 
                                                 // URLString to be one of the 
                                                // working URLs from the Postman 
                                               // Client, doesn't work as well.
[request setHTTPMethod:@"GET"];
NSData* response = [NSURLConnection sendSynchronousRequest:request 
                                          returningResponse:&urlResponseList
                                          error:&requestErrorList];

响应为空,我得到状态码500。 有谁知道如何使这项工作?感谢。

2 个答案:

答案 0 :(得分:1)

当Web服务无法处理您的请求时,会出现HTTP状态代码500。发生内部错误。

尝试在您的请求中添加更多详细信息。

[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

答案 1 :(得分:1)

看起来你的网址中有空格,你需要在将字符串发送到NSURL之前将其转义。

如果这不起作用,知道服务器的完整错误也是有帮助的。 requestErrorList包含什么?

但如果唯一的问题是非转义字符,这样的事情应该有用。

NSString *encodedString = [URLString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[request setURL:[NSURL URLWithString:encodedString];