【问题标题】:iOS - REST Client works fine while NSURLRequest returns NULLiOS - NSURLRequest 返回 NULL 时,REST 客户端工作正常
【发布时间】:2013-05-07 14:22:25
【问题描述】:

我正在尝试通过 GET HTTP 请求从云中下载文件,并且在我的 REST 客户端(Chrome 的 Postman)中我得到了预期的结果,但是当我在 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。 任何人都知道如何使这项工作?谢谢。

【问题讨论】:

    标签: ios json rest httprequest


    【解决方案1】:

    您的 URL 中似乎有一个空格,您需要先将其转义,然后再将字符串发送到 NSURL。

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

    但如果唯一的问题是非转义字符,这样的东西应该可以工作。

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-08-10
        • 2011-10-07
        • 1970-01-01
        • 1970-01-01
        • 2020-09-13
        • 2017-08-17
        • 1970-01-01
        • 2014-10-01
        • 2013-08-11
        相关资源
        最近更新 更多