我使用HttpURLConnection访问服务器上的某些php文件。我确实得到了正确的结果但是我的GET和响应之间的延迟非常长。我检查了像stackoverflow这样的网站并尝试了一些技巧,比如System.setProperty(“http.keepAlive”,“false”); setRequestProperty(“connection”,“close”);但延迟仍然存在。然后我根据我的HTC,安装了Shark,捕获了服务器的流量,并将pcap文件复制到我的Wireshark。我比较了我的logCat和Wireshark,发现在显式调用HttpURLConnection.connect()和Android传输的第一个TCP SYN之间有20秒的差距。
为了比较,我从Android浏览器访问服务器上的相同文件,它花了< 2s ......
我的设备:HTC轰动(Android 2.3.4)
我的代码(在AsyncTask中)是这样的:
System.setProperty("http.keepAlive", "false");
URL httpUrl = new URL(url);
HttpURLConnection connection = null;
connection = (HttpURLConnection) httpUrl.openConnection();
// prepare the request
if (connection != null) {
connection.setRequestProperty("connection", "close");
connection.setDoInput(true);
connection.setRequestMethod("GET");
connection.setUseCaches(false);
connection.setFollowRedirects(false);
connection.setRequestProperty("Accept-Encoding", "identity");
connection.setConnectTimeout(CONNECTION_TIMEOUT); // doesn't seem to work anyway
connection.setRequestProperty("User-Agent", USER_AGENT);
connection.connect();
// get response here .... getContentEncoding(); getContentLength(); getHeaderFieldKey(); etc
}
我已经在这个问题上工作了几天,在网上搜索仍然没有任何线索。非常感谢任何评论。
答案 0 :(得分:0)