- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个问题
connection:didWriteData:totalBytesWritten:expectedTotalBytes:
NSURLConnectionDownloadDelegate 的方法在 iOS 6 下。
在 iOS 5 模拟器 下它工作得很好,给我正确的 expectedTotalBytes 值。
在 iOS 6 Simulator 上,expectedTotalBytes 始终返回 0。totalBytesWritten 值仍然正确。
同样的请求,同样的URL,只是操作系统版本不同。
有没有人遇到过类似的问题或者知道是什么原因导致的?
干杯金
最佳答案
刚刚花了很多时间调查同一个问题。原来在iOS6中,请求是先用HEAD来查headers的,这倒也不算异常。
但是,似乎忽略了对实际 GET 请求的响应的 header 。 因此,如果您的服务器不支持 HEAD 或针对给定 URL 的 HEAD 请求返回 0 内容长度,iOS NSURLConnection 将使用错误信息。
我的问题是我的自定义服务器不支持我正在下载的文件的 HEAD 请求,而是返回 405(HTTP 错误 405 方法不允许),它在自己的响应中包含一个内容长度,然后 iOS6 在返回 expectedTotalBytes 时使用,而不是 GET 响应中的正确响应。
为了解决我的问题,我首先为我的文件下载请求启用了 HEAD,然后确保返回了正确的内容长度。验证方式:
curl -v -I http://url
...
< Content-Length: 23493947
Content-Length: 23493947
不确定这是 iOS6 中的错误还是更好地符合 HTTP 标准。希望对其他人有所帮助。
关于ios - iOS 6 中的 NSURLConnectionDownloadDelegate expectedTotalBytes 为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12582849/
我有一个问题 connection:didWriteData:totalBytesWritten:expectedTotalBytes: NSURLConnectionDownloadDelegate
我是一名优秀的程序员,十分优秀!