我有一个问题
connection:didWriteData:totalBytesWritten:expectedTotalBytes:
的方法NSURLConnection 下载委托在 iOS 6 下。
Under iOS 5 模拟器它工作得很好,给了我正确的预期总字节值。
On iOS 6 模拟器,expectedTotalBytes 始终返回 0。totalBytesWritten 值仍然正确。
这是相同的请求,相同的 URL,只是操作系统版本不同。
有没有人遇到过类似的问题或知道可能导致此问题的原因是什么?
干杯
金
刚刚花了很多时间调查同样的问题。事实证明,在iOS6中,请求首先使用HEAD来调查标头,这并不算异常。
然而,实际 GET 请求的响应中的标头似乎被忽略了。因此,如果您的服务器不支持 HEAD 或针对给定 URL 的 HEAD 请求返回 0 内容长度,iOS NSURLConnection 将使用错误信息。
我的问题是我的自定义服务器不支持我正在下载的文件的 HEAD 请求,而是返回 405(不允许 HTTP 错误 405 方法),该响应在其自己的响应中包含内容长度,然后 iOS6 在返回预期的TotalBytes 时使用该内容长度,而不是返回纠正 GET 响应中的一个。
为了解决我的问题,我首先为文件下载请求启用 HEAD,然后确保返回正确的内容长度。验证:
curl -v -I http://url
...
< Content-Length: 23493947
Content-Length: 23493947
不确定这是否是 iOS6 中的错误,或者只是更好地符合 HTTP 标准。希望对其他人有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)