ASIHTTPRequest在3G上很奇怪

时间:2012-11-21 10:37:48

标签: iphone objective-c asihttprequest

我想使用ASIHTTPRequest下载文件,方法如下:

ASIHTTPRequest *request;
request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:downloadServer]];
[request setUserInfo:[NSDictionary dictionaryWithObject:@"download" forKey:@"download"]];
[request setDidFinishSelector:@selector(downloadIsFinished:)];
[request setDidFailSelector:@selector(downloadIsFailed:)];
[request setDelegate:self];
[request setTimeOutSeconds:40];
[request setDownloadProgressDelegate:self];
[request setShowAccurateProgress:YES];
[request startAsynchronous];

如果我在Wifi上一切都很好,但是如果我在3G上,那么我的方法会尝试下载文件,但是10秒后,downloadIsFinish委托会触发,但我的文件实际上并未下载.... < / p>

1 个答案:

答案 0 :(得分:0)

这种事情通常是由于没有正确实现NSURLConnectionDelegate方法而导致的错误。一个可见的副作用可能是UI中出现的半下载图像。

例如,如果服务器在收到整个响应之前断开连接,则NSURLConnection不会引发任何错误。像往常一样调用connectionDidFinishLoading:。您必须明确检查您收到的字节数是否等于Content-Length标头中指定的数字(如果它存在)。如果您尚未收到所有数据,则需要自行提出错误。

请注意ASIHTTPRequest的开发已停止。请参阅this blog post from its creator

现在大多数人似乎都推荐AFNetworking,虽然上次我检查时他们也没有处理这种早期断开连接的情况。