gpt4 book ai didi

ios - NSURLResponse 返回内容范围,忽略我要求的范围

转载 作者:可可西里 更新时间:2023-11-01 05:56:12 26 4
gpt4 key购买 nike

下载文件时,我希望能够继续下载。例如:

NSFileManager *fm = [NSFileManager defaultManager];
NSString *downloadTempPath = [_tempPath path];
if ([fm fileExistsAtPath:downloadTempPath]) {
// We have a partial download. Get the rest of the file starting at byteCount
NSDictionary *dAttrib = [fm attributesOfItemAtPath:downloadTempPath error:nil];
NSUInteger byteCount = [dAttrib fileSize];
NSLog(@"Preparing to resume download: %@", downloadTempPath);
NSString *requestRange = [NSString stringWithFormat:@"bytes=%d-", byteCount];
[self.request setValue:requestRange forHTTPHeaderField:@"Range"];
}

这将产生一个带有如下 header 的获取请求:

Range:bytes=1000-

我希望第一个 206 响应在我要求它开始的地方给我一个 block ,有一个标题和这样的值(从 allHeaderFields 转储):

"Content-Range" = "bytes 1000-340197/340198";

但有时它会跳到前面并返回类似这样的内容:

"Content-Range" = "bytes 32000-340197/340198";

这真的很糟糕,因为我需要 1000-32000 的那些字节,但它没有给我。

我知道没有服务器错误,因为当我 curl 到服务器时,它会返回我请求的部分。此外,当我使用 wireshark 时,我没有看到任何数据包进入服务器。所以这是 iOS 端的问题,可能与 NSURLCache

有关

最佳答案

这似乎是 NSURLCache 中的错误。当我检测到问题发生时,我执行以下操作并重试。

    [[NSURLCache sharedURLCache] removeCachedResponseForRequest:self.request]; 

一旦我这样做了,问题就不会再发生了。它似乎可以修复缓存。我在 iOS5.0 上看到这个,由于我无法再重现,我不知道它是否发生在较新的操作系统上。

关于ios - NSURLResponse 返回内容范围,忽略我要求的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15509465/

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