Irf*_*ISH 84 http download http-status-codes nserror
我正在开发一个iOS项目.
在此应用程序中,我正在从服务器下载图像.
问题:
在下载图像时,我收到请求超时.根据文档HTTP请求超时的状态代码是408.
但在我的应用程序中,我收到HTTP状态代码0,出现以下错误
错误域= NSURLErrorDomain代码= -1001"请求超时." UserInfo = 0xb9af710 {NSErrorFailingURLStringKey = http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg,NSErrorFailingURLKey = http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg,NSLocalizedDescription =请求超时.,NSUnderlyingError = 0x13846870"请求超时."}
在搜索期间,通过互联网,我找不到有关HTTP状态代码0的信息.
任何人都可以向我解释这个吗?
Jul*_*hke 85
没有HTTP状态代码0.您看到的是您正在使用的API /库返回的0.您必须检查文档.
dev*_*os1 64
对象中的状态代码0 NSHTTPURLResponse通常意味着没有响应,并且可能由于各种原因而发生.服务器永远不会返回0状态,因为这不是有效的HTTP状态代码.
在您的情况下,您似乎获得状态代码0,因为请求超时,0只是属性的默认值.超时本身可能由于各种原因,例如服务器没有及时响应,被防火墙阻止,或者整个网络连接断开.通常在后者的情况下,尽管手机足够聪明,知道它没有网络连接并且会立即失败.但是,它仍然会失败,显而易见的状态代码为0.
请注意,在状态代码为0的情况下,将在返回的NSError对象中捕获实际错误,而不是NSHTTPURLResponse.
408根据我的经验,HTTP状态非常罕见.我自己从未遇到过.但它显然用于客户端需要维护与服务器的活动套接字连接,并且服务器正在等待客户端通过打开的套接字发送更多数据的情况,但它不会在给定的时间内和服务器以408状态代码结束连接,基本上告诉客户"你花了太长时间".
小智 7
有时,浏览器会使用错误对象响应 http 错误处理程序,该对象的状态设置为 0,即使您可以在网络中看到 404、401、500 等错误状态。
如果您的应用程序和 API 位于不同的域中,则可能会发生这种情况 - 应用了 CORS 机制。根据 CORS,浏览器为每个 API 请求发送两个请求:
在应用程序中,我们正在处理“实际/原始请求”的错误响应,如果“预检选项请求”失败 - 浏览器不会为 http 错误处理程序提供正确的 HttpError 对象。因此,要获得 http 响应的正确状态 - 请务必获得成功的预检 OPTIONS 请求响应。
根据我有限的经验,我会说以下两种情况可能会引起反应status code: 0,请记住; 他们可能会更多,但我知道这两个:
事情是,status: 0略微通用,它们可能是触发空响应体的更多用例.
| 归档时间: |
|
| 查看次数: |
243867 次 |
| 最近记录: |