【发布时间】:2025-12-28 02:40:06
【问题描述】:
我正在为 HTTP 请求使用 ASIHTTPRequest 并将结果保存到单独的文件中。由于文件预计很大,它也应该能够恢复。
request.allowResumeForFileDownloads = YES;
request.downloadDestinationPath = destFile;
request.temporaryFileDownloadPath = tmpFile;
我使用以下选择器:
request.didFinishSelector = @selector(didFinishRequest:);
request.didFailSelector = @selector(didFailRequest:);
request.didReceiveResponseHeadersSelector = @selector(didReceiveResponse:);
现在我正在测试不同的情况,包括失去连接、不同的代理等,并发现了一个问题,如果收到带有 503 或其他代码的响应,那么 ASIHTTPRequest 仍然将结果保存到临时文件中,这是错误的,因为数据是一些有错误的随机 HTML 页面(如果有部分下载的文件,那么这个 HTML 会附加到它上面,这会使我的数据损坏)。
所以我要做的是检查响应代码,如果不是 2XX,则取消请求而不保存任何内容。
这没有帮助:
- (void)didReceiveResponse:(ASIHTTPRequest*)request {
if (request.responseStatusCode < 200 || request.responseStatusCode >= 300) {
[request clearDelegatesAndCancel];
有什么想法吗?
【问题讨论】:
-
当您尝试发布的代码时会发生什么?您是否尝试过进入 [request clearDelegatesAndCancel] 以找出为什么它没有停止下载?
标签: iphone http asihttprequest