我有一个 iPad 应用程序,我在其中使用 NSURLConnection 进行异步调用。在某些情况下,我在connection:didReceiveData:中收到所有响应数据,但从不调用 connectionDidFinishLoading。没有错误。这有点随机,因为相同的响应在其他时间完成。
我的课程的工作方式是使用以下命令连续发送大约 20 个请求:
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
然后我就等他们回来。这是创建多个请求的有效方法吗?
这是未完成的响应的示例标头。它与已完成的响应的标头无法区分。
>Keep-Alive: timeout=5, max=100
>Transfer-Encoding: Identity
>Server: Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.8b mod_jk/1.2.26
>Content-Type: application/json;charset=UTF-8
>Connection: Keep-Alive
>Date: Wed, 03 Apr 2013 05:25:32 GMT
>Cache-Control: private, no-transform, max-age=600
问题的一个奇怪症状是我开始使用以下方法检查预期的内容长度:
long long download_size =[response expectedContentLength];
Content-Length 永远不会在 http 标头中设置。当请求失败时,download_size 为 -1(预期),当同一请求未失败时,download_size 设置为某个数字。但是,有很多情况下download_size没有设置,响应也没有失败。