0

我使用 HttpURLConnection 访问服务器上的某些 php 文件。我确实得到了正确的结果,但是我的 GET 和响应之间的延迟非常长。我检查了像 stackoverflow 这样的网站,并尝试了一些技巧,比如 System.setProperty("http.keepAlive", "false"); setRequestProperty("连接", "关闭"); 但延迟仍然持续存在。然后我将我的 HTC 植根,安装 Shark,通过服务器捕获流量,并将 pcap 文件复制到我的 Wireshark。我比较了我的 logCat 和 Wireshark,发现我明确调用 HttpURLConnection.connect() 和 Android 传输的第一个 TCP SYN 之间有 20 秒的差距。

为了比较,我从 android 浏览器访问了服务器上的相同文件,它花了 < 2s ...

我的设备:HTC sense (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

}

我已经在这个问题上工作了几天,在网上搜索,仍然没有任何线索。非常感谢您的任何评论。

4

1 回答 1

0

我向 Google 项目提交了一份错误报告,他们已经复制了它。

http://code.google.com/p/android/issues/detail?id=30664

等着瞧 。

于 2012-05-16T23:15:49.147 回答