gpt4 book ai didi

iphone - 响应预期内容长度返回-1

转载 作者:行者123 更新时间:2023-12-03 19:26:56 27 4
gpt4 key购买 nike

您好,当我从网络服务加载数据时,我需要创建一个 ProgressView。

实际上expectedContentLength总是返回-1。

在查看了很多类似的问题后,看起来我的网络服务从未发送内容长度:。

然后我检查 CURL,结果如下:

< HTTP/1.1 200 OK
< Date: Thu, 21 Jun 2012 10:04:39 GMT
< Server: Apache/2.2.16 (Debian)
< X-Powered-By: PHP/5.3.3-7+squeeze9
< cache-control: no-cache
< Vary: Accept-Encoding
< Content-Type: text/html; charset=UTF-8
< Content-Length: 3239
< Connection: Keep-Alive
< Set-Cookie: PHPSESSID=u4o4i9dofdgnkfmtnf163635j6; path=/

这是我捕获长度的代码

long long expectDataSize;
long long currentDataSize;

....

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSHTTPURLResponse *)response
{
NSLog(@"expect content length %lld", [response expectedContentLength]);
expectDataSize = [response expectedContentLength];
currentDataSize = 0;
}

有人已经看到这个问题了吗?

最佳答案

好吧,我自己解决了,这是我真正的问题和解决方案:

当我用 Curl 询问时,我可以得到长度,没有问题。

但是当我使用 NSurlConnection

NSURLConnection *c = [[NSURLConnection alloc] initWithRequest:req delegate:self];

响应将使用“Gzip”进行压缩(不要问我为什么)。如果响应使用 Gzip 进行编码,则无法知道长度,则“expectedContentLength”返回-1[response allHeaderFields] 中缺少“Content-Length”。

如果你真的想获得长度,你可以简单地强制不使用 Gzip,如下所示:

[req setValue:@"" forHTTPHeaderField:@"Accept-Encoding"];

关于iphone - 响应预期内容长度返回-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11136020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com