ランキングサーバーに接続して現在のランクを取得するアプリを開発しています。Android:HttpURLConnectionは、Bluetoothディスカバリで応答を取得するのに非常に時間がかかります
このため、私はHttpURLConnectionクラスを使用しています。 私はWiFiで接続していますが、接続時間が非常に長くなっています。接続が拒否されることもあります。その後、私はWiFiルーターに接続しなくなりました。 サーバーは高速で、ネットワーク接続と待ち時間が良好です。 テスト目的のために、私は各部分の時間を計算しました。ここで
コードです:02-17 15:21:27.800: D/RandEXETime(6008): 0
02-17 15:21:27.800: D/SMBD_AsyncTask_params(6008): 4454|C8:AA:21:F1:C0:BA|Maksl5|57
02-17 15:21:27.800: D/SMBD ID(6008): 4454
02-17 15:21:27.800: D/URLEXETime(6008): 1
02-17 15:21:27.870: D/RequestEXETime(6008): 68
02-17 15:21:27.870: D/SMBD_AsynkTask(6008): After sending
02-17 15:21:27.950: D/ResponseEXETime(6008): 76
02-17 15:21:27.950: D/ResponseINEXETime(6008): 1
02-17 15:21:27.950: D/SMBD_AsynkTask_response(6008): 101./2171
しかしとき:
私は無線LANに接続し、それに再接続してい //The code runs in the doInBackground(String... params) method
long randStartTime = System.currentTimeMillis();
do
{
Random randomGenerator = new Random();
randomgen = randomGenerator.nextInt(10);
}while(randomgen == 0);
int random = //Calculation of the Session_ID
String res = null;
long randEndTime = System.currentTimeMillis();
Log.d("RandEXETime", String.valueOf(randEndTime - randStartTime));
HttpURLConnection connection = null;
try {
long URLStartTime = System.currentTimeMillis();
String[] paramsList = params[0].split("\n");
Log.d("SMBD_AsyncTask_params", paramsList[0] + "|" + paramsList[1] + "|" + paramsList[2] + "|" + paramsList[3]);
Integer idList = Integer.decode(paramsList[0]);
String request;
if(idList == 0) {
request = "http://maks.mph-p.de/blue/checkrankv12.php?device_number=" + paramsList[3] + "&session_id=" + random;
}else{
Log.d("SMBD ID", idList.toString());
request = "http://maks.mph-p.de/blue/checkrankv12.php?read=1&id=" + idList + "&device_number=" + paramsList[3] + "&session_id=" + random;
}
String urlParameters = "adress=" + URLEncoder.encode(paramsList[1], "UTF-8") + "&name=" + URLEncoder.encode(paramsList[2], "UTF-8");
URL url = new URL(request);
long URLEndTime = System.currentTimeMillis();
Log.d("URLEXETime", String.valueOf(URLEndTime - URLStartTime));
long RequestStartTime = System.currentTimeMillis();
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("charset", "utf-8");
connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
connection.setUseCaches (false);
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
long RequestEndTime = System.currentTimeMillis();
Log.d("RequestEXETime", String.valueOf(RequestEndTime - RequestStartTime));
Log.d("SMBD_AsynkTask", "After sending");
long ResponseStartTime = System.currentTimeMillis();
InputStream in = new BufferedInputStream(connection.getInputStream());
long ResponseEndTime = System.currentTimeMillis();
Log.d("ResponseEXETime", String.valueOf(ResponseEndTime - ResponseStartTime));
long ResponseINStartTime = System.currentTimeMillis();
res = inputStreamToString(in);
long ResponseINEndTime = System.currentTimeMillis();
Log.d("ResponseINEXETime", String.valueOf(ResponseINEndTime - ResponseINStartTime));
Log.d("SMBD_AsynkTask_response", res);
//}
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
res = "false";
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
res = "false";
}catch (IOException e2) {
// TODO Auto-generated catch block
res = "false";
}finally{
connection.disconnect();
}
String result = res;
return result;
、アプリを起動し、接続時間は、それがあるべきようなものです私は、アプリケーションを閉じて、再び開いて、接続時間が長すぎます:
02-17 15:06:36.220: D/RandEXETime(5575): 0
02-17 15:06:36.220: D/SMBD_AsyncTask_params(5575): 4454|C8:AA:21:F1:C0:BA|Maksl5|56
02-17 15:06:36.220: D/SMBD ID(5575): 4454
02-17 15:06:36.220: D/URLEXETime(5575): 2
02-17 15:06:39.300: D/RequestEXETime(5575): 3070
02-17 15:06:39.300: D/SMBD_AsynkTask(5575): After sending
02-17 15:06:45.490: D/dalvikvm(5575): GC_CONCURRENT freed 192K, 4% free 6755K/6983K, paused 2ms+2ms
02-17 15:07:09.130: D/ResponseEXETime(5575): 29830
02-17 15:21:56.430: D/ResponseINEXETime(6008): 1
02-17 15:07:09.130: D/SMBD_AsynkTask_response(5575): 102./2171
私の質問は、応答はわずか11文字で30秒かかりますか? タブレットがWiFiルーターの近くに5 cmあるときにも問題が発生します。
このアプリでのみ問題は発生しません。
3Gで確認することはできません。
私を助けることができますか?
私はそれがあなたのコードだけでなく、多くの要素に依存すると思います。 – kosa