2

これに約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;

}
4

1 に答える 1

0

投稿コンテンツの長さを指定するリクエスト ヘッダーを追加します。

con.setRequestProperty("Content-Length", "" + json.length());
于 2013-02-06T04:59:49.267 に答える