これに約20秒かかる理由を誰でも見つけることができますか? 以下のコードを実行して、JSON リクエストをローカル サーバー 192.168.1.127 に送信しています。
curl -H "Content-type: application/json" -X POST http:// 192.168.1.127:8080/bed -d '{"コマンド":{"値":3.012,"セット":"目標圧力電圧"}, "id":2002,"side":"left","role":"command"}'
サーバーが実行されている同じボックスでのカールは瞬時であり、サーバーは文句を言いません。
Android ブラウザーからの get 要求は高速です。OS バージョン 4.x の 2 つの Android デバイスを試しました。
私が知る限り、この質問は役に立ちません: Android HttpURLConnection VERY slow
con.getInputStream() には約 20 秒かかります:
String httpJson(String url, JSONObject job) {
String ret = null;
HttpURLConnection con = httpJsonCon(url);
if(con!=null)
httpJsonCon(con, url,job);
return ret;
}
HttpURLConnection mkCon(String url) {
HttpURLConnection con = null;
URL u = null;
try {
u = new URL(url);
con = (HttpURLConnection) (u.openConnection());
con.setRequestMethod("POST");
con.setUseCaches(false);
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "text/plain");
con.setRequestProperty("Accept", "application/json");
con.setDoOutput(true);
con.setDoInput(true);
con.connect();
} catch (Exception e) {
Log.w(TAG, " e= " + e);
if(con!=null)
con.disconnect();
con = null;
}
return con;
}
String sendJson(HttpURLConnection con, JSONObject job) {
String ret = null;
if(con==null){
return ret;
}
try {
final String toWriteOut = job.toString();
final Writer out = new OutputStreamWriter(new BufferedOutputStream(
con.getOutputStream()), "UTF-8");
out.write(toWriteOut);
out.flush();
//con.getInputStream() Takes ~20 sec:
final BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
} catch (IOException e) {
Log.d(TAG, " e= " + e);
ret = null;
} finally {
if(con!=null)
con.disconnect();
}
return ret;
}