我正在下载文件(使用apache tomcat 6.0.32)。当我断开连接(关闭tomcat)时,ASHITTPRequest会产生错误,但有时(大部分时间正好......完全正确!只有在开始时没有连接发生错误时)它会像所有正确的一样工作。当连接丢失时ASIHTTPRequest没有错误
所以有一个问题:为什么会发生这种情况,我怎么才能看到连接是否丢失。
非常感谢!
UPDATE:
尝试通过发送TCPMon的请求,然后停止它(TCPMon的),并得到相同的:ASIHTTPRequest认为下载正确。
UPDATE:
responseHeaders响应:
"Content-Disposition" = attachment;
"Content-Length" = 2277888;
"Content-Type" = "application/octet-stream";
Date = "Thu, 28 Apr 2011 12:35:32 GMT";
Server = "Apache-Coyote/1.1";
"Set-Cookie" = "JSESSIONID=98CAE6C0C4275B528D5E0F8651546AFE; Path=/ISED";
responseStatusMessage:
HTTP/1.1 200 OK
UPDATE:
如果用手断开计算机(断开电缆),并得到这个:
有时候ASIHTTPRequest会一直等到超时,并且下一个请求会出现连接错误。
有时发生错误只是在我断开连接的时间。
有时候不会发生错误,我只是断开连接:下载进度丢失,并且(如果再次连接)它从头开始下载。
如果关闭端口ASIHTTPRequest认为成功下载完成。
我无法理解这样的逻辑...
SOLUTION:
我解决了在页眉和总字节数比较Content-Length的问题阅读:
NSString *contentLength = [[self.request responseHeaders] valueForKey:@"Content-Length"];
NSString *downloadedBytesCount = [NSString stringWithFormat:@"%llu",[self.request totalBytesRead]];
if ([contentLength isEqualToString:downloadedBytesCount] == NO) {
// error maintain
}
,所以我可以检查我是否得到所有数据,如果没有:保持错误。 在其他情况下(如手动断开连接),ASIHTTPRequest以合适的方式工作并自行生成错误。
你用NSURLConnection测试过了吗?requestFinished委托方法中的响应(标题和正文)是什么意思? – 2011-04-28 12:17:16