我在Android應用程序中使用Apache DefaultHttpClient向Web服務器發出獲取請求(URL無關緊要,現象出現在不同的服務器/網站上)。使用HTC Desire與3G網絡的第一次請求需要幾秒鐘(> 4秒),接下來的時間大概只有0.5秒。如果我在進行下一個請求之前等待超過15秒,則下一個請求再次需要幾秒鐘。 請求使用HTTP1.1,服務器時間不是問題。 DNS查找也不是問題,因爲我也嘗試使用IP。Http請求第一次慢,等待時間太長
對我來說,它看起來像是在Apache框架中的一些連接超時設置,或者是我的HTC設備將網絡接口置於睡眠狀態(如果這樣做的話)。
編碼是非常簡單的,它看起來像這樣:
HttpGet get = new HttpGet(uri);
long startTimeMillisRequest = System.currentTimeMillis();
HttpResponse response = client.execute(get);
long endTimeMillisRequest = System.currentTimeMillis();
沒有人有原因的線索或遇到同樣的事情嗎? 我已經把它放到一個AsyncTask中,但我仍然想知道爲什麼它這麼慢。
感謝, 馬丁
您可以使用tcpdump捕獲數據包並驗證數據包的發送和接收時間戳,以查看從服務器獲取響應所需的確切時間,而不是使用System.currentTimeMillis()來測量開始和結束時間。 – 2011-03-01 12:27:59