httpurlconnection を使用して、正常に接続し、データを送受信できます。しかし、私の電話 (Samsung s4、4.2) と android 4.2 エミュレーターにすべてのデータをロードするには、非常に長い時間がかかります。ただし、Android 2.3.x エミュレーターで写真を読み込むには、ほぼ 1 ~ 2 秒 (非常に高速) かかります。http接続で私のgalaxy s4よりも高速です。
私は AsyncTask を使用していますが、私のコードは両方で正常に動作します。Android 4.2sでは遅いだけです。chunkedStreaming、キープアライブ、タイムアウト値の変更などを削除しようとしましたが、まだ成功しません
これが私のコードです
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setUseCaches(false);
urlConnection.setChunkedStreamingMode(0);
urlConnection.setRequestProperty("Connection", "Keep-Alive");
urlConnection.setConnectTimeout(6000);
urlConnection.setReadTimeout(6000);
urlConnection.setRequestProperty("Content-Type", "multipart/form-data;charset=UTF-8;boundary="+boundary);
urlConnection.connect();
4.2 と 2.3.x の httpurlconnections に違いはありますか? ここで何が問題なのですか
アップデート!
Log.e() を使用してテストし、最も時間がかかる行を確認しました。
///// other staff
////......
Log.e("HTTP","3");
if (isCancelled())
return (null); // don't forget to terminate this method
Log.e("HTTP","3");
//Output
DataOutputStream outputStream = new DataOutputStream( urlConnection.getOutputStream() );
//Send Passcode
Log.e("HTTP","4");
3 ~ 4 回、ライン上で 5 ~ 6 秒のパス
DataOutputStream outputStream = new DataOutputStream( urlConnection.getOutputStream() );
アップデート!!
その待機時間 (以前の更新を参照) は、urlConnection.setConnectTimeout(6000); に関連しています。
タイムアウトを 1000 にすると、接続がすばやく応答します (回線を 1 秒待ちます)。
DataOutputStream outputStream = new DataOutputStream( urlConnection.getOutputStream() );
なぜこれが起こっているのか分かりません