我正在下載文件(使用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