首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未填充NSError

未填充NSError
EN

Stack Overflow用户
提问于 2013-02-05 02:10:51
回答 2查看 513关注 0票数 1

在我使用这个方法之前,我已经用过好几次了。

代码语言:javascript
复制
NSURLResponse *response;
NSError *error;

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

在NSOperation中同步发送/接收数据,并已正常工作。

我现在正在做一个新的项目(新的API,新的服务器),错误就是没有被填充。

我使用Charles代理来窥探网络流量,我可以在Charles中看到从失败的请求返回的"Response Code 500 Internal Server Error“,但在应用程序中,error对象总是为nil。

正如我所说的,我以前使用过这个加载,如果发生错误,总是会填充错误。

在服务器端有什么我可以向服务器端开发人员指出的吗?他坚持认为我一定做错了什么。我唯一不明白的是Charles从中提取了响应码500。

注意:问题不在于发生了错误。问题是,当它确实发生时,NSError对象不会将它报告给我。只是为了澄清一下,以防有人告诉我让服务器开发人员来修复这个错误。:-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-05 02:31:56

您的错误对象没有被填充,因为从NSURLConnection的角度来看,请求是成功的--也就是说,它能够向服务器发送数据并接收响应。

对于特定于协议的错误,您需要检查返回的NSURLResponse。在这种情况下,将响应强制转换为NSHTTPURLResponse并调用-statusCode

票数 7
EN

Stack Overflow用户

发布于 2013-02-05 03:45:06

仅当没有来自服务器的响应或不是有效的HTTP响应时,才会填充该错误。

"Response Code 500 Internal Server Error“表示存在内部服务器错误,您的服务器返回一条响应代码为500的HTTP消息。您应该使用NSHTTPURLResponse而不是NSURLResponse,并调用statusCode方法来检查HTTP响应代码。如果响应代码以2开头,则一切正常。所以我通常有一个像这样的检查:statusCode / 100 == 2

有关更多HTTP响应代码,请参阅http://en.wikipedia.org/w/index.php?title=HTTP_response_codes

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14692813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档