0

HttpURLConnectionを使用して、サーバー上の特定のphpファイルにアクセスします。適切な結果は得られますが、GETと応答の間の遅延は非常に長くなります。私はstackoverflowのようなウェブをチェックアウトし、System.setProperty( "http.keepAlive"、 "false");のようないくつかのトリックを試しました。setRequestProperty( "connection"、 "close"); しかし、遅延は依然として持続します。次に、HTCをルート化し、Sharkをインストールし、サーバーでトラフィックをキャプチャして、pcapファイルをWiresharkにコピーしました。logCatとWiresharkを比較したところ、HttpURLConnection.connect()を明示的に呼び出したものとAndroidによって送信された最初のTCPSYNとの間に20秒のギャップがあることがわかりました。

比較するために、Androidブラウザからサーバー上の同じファイルにアクセスしましたが、2秒未満かかりました...

私のデバイス: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

}

私はこの問題に数日間取り組んでおり、Webを検索していますが、まだ手がかりがありません。コメントありがとうございます。

4

1 に答える 1

0

私は Google プロジェクトにバグ レポートを提出し、彼らはそれを再現しました。

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

見ます。

于 2012-05-16T23:15:49.147 に答える