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を検索していますが、まだ手がかりがありません。コメントありがとうございます。