我在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