gpt4 book ai didi

iOS8:NSURLSession:NSURLSessionDataTask 'Client closed connection before receiving entire response'

转载 作者:行者123 更新时间:2023-12-03 17:48:37 24 4
gpt4 key购买 nike

我使用 iOS Background FETCH n Background TRANSFER 来更新我们的应用程序。

当我们下载 MP4 作为大量文件的大量下载的一部分时,下载可能会突然停止并出现错误:

'Client closed connection before receiving entire response'



http代码还是200。

由于公司蜂窝帐户,我们对数据没有限制,并且我们的 iPad 上有单个应用程序,因此管理层希望我们在 20/30 的某个时候通过全新安装下载更多数据和文件数量。
它们是每天发布的企业视频/pdf。

我创建了一个 NSURLSession
NSURLSession * backgroundSession_ = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier]

然后对于每个指向 mp4 或 PDF 的 URL,我从我的 NSURLSession 创建一个 NSURLSessionDownloadTask
NSURLSessionDownloadTask * downloadTask_ = [backgroundSession_ downloadTaskWithURL:url_];

每个下载任务上的火关闭恢复。
当所有返回 NSURLSession 完成时,我会在通知中告诉用户应用程序已更新。

我在我的 mac 上使用 CHARLES PROXY 来监控下载。
这需要一段时间,因为有很多文件,而且我注意到电影似乎在流式传输,因此速度可能很慢。
通常它会检查已下载的内容,并且只下载最新的内容,但是如果我进行了大量下载,说要进行全新安装,我注意到安静的 mp4 流经常被杀死。
他们有一个 200 代码但有消息

'客户端在收到整个响应之前关闭连接'

知道什么可能导致这种情况,因为它可以阻止我的 NSURLSession 完成,因此我的同步可以进入某种挂起状态。

图像:OK 下载:电影流并保存到磁盘:200:完成

IMAGE:OK DOWNLOAD: MOVIE STREAMS AND SAVED TO DISK: 200: Complete

图片:下载突然停止:

IMAGE: DOWNLOAD SUDDENLY STOPS:
IMAGE: DOWNLOAD SUDDENLY STOPS:

任何想法:我使用后台提取所以不确定消息中的客户端是 iOS8 还是我的应用程序。
每个下载任务返回后,我将 tmp 文件复制到文档中的 mp4 并调用
[session finishTasksAndInvalidate];

如果其中一些下载任务失败,那么我注意到 session 永远不会完成并卡住。
当我再次获取时,我会得到所有这些旧的下载任务和旧的 session 。

最佳答案

有人问我是如何解决这个问题的,但两年后。

我们还缩小了电影文件以加快下载速度。
我还记得 session 和配置具有单独的设置。我已经在其中设置了标题,但是当 iOS 8/9 出现时失败了,因为它应该在 session 中设置而不仅仅是配置 - 但现在可能会在 iOS 10 中修复

//-----------------------------------------------------------------------------------
//some movie streams time out n get
//'http://stackoverflow.com/questions/23428793/nsurlsession-how-to-increase-time-out-for-url-requests'
//'Client closed connection before receiving entire response'

NSLog(@"urlSessionConfigurationBACKGROUND_.timeoutIntervalForRequest:%f", urlSessionConfigurationBACKGROUND_.timeoutIntervalForRequest);
NSLog(@"urlSessionConfigurationBACKGROUND_.timeoutIntervalForResource:%f", urlSessionConfigurationBACKGROUND_.timeoutIntervalForResource);

//was 60
//urlSessionConfigurationBACKGROUND_.timeoutIntervalForRequest = 240.0;
urlSessionConfigurationBACKGROUND_.timeoutIntervalForRequest = 600.0;
// urlSessionConfigurationBACKGROUND_.timeoutIntervalForResource = 60.0;

关于iOS8:NSURLSession:NSURLSessionDataTask 'Client closed connection before receiving entire response',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27149576/

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