4

サーバーからJSON形式でデータをダウンロードすることを含むアプリを作成しています。同じことを達成するために HTTP Post を使用しています。ダウンロードする JSON ファイルのサイズは約 2 ~ 3 KB です。これらすべての操作を別のスレッドで実行しています。

ただし、アプリのパフォーマンスは非常に予測できません。デバッグを試みたところ、HttpPost オブジェクトを作成している行でアプリが動かなくなることがあり、その行を実行するのに 1 ~ 2 秒しかかからないことがあります。何が問題になる可能性がありますか? アプリが大量のメモリを消費している可能性がありますか? もう1つ、アプリを強制的に閉じると、2回目は正常に実行されます。ありがとう !

public String getJSONString(String url) {
    try {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) 
        {sb.append(line + "n");}
        is.close();
        json = sb.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }
    return json;

}

}

4

2 に答える 2

1

このコードで試すことができます。

                    // Create a new HttpClient and Post Header
        httpclient = new DefaultHttpClient();
        httppost = new HttpPost(your URL) 

        // Sending details in Json Format
        JSONObject holder = new JSONObject();
        try { 
                     ------------
                   --------------

                } catch (JSONException e1) {
            e1.printStackTrace();
        }

    StringEntity se = new StringEntity(holder.toString());
    se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));
    httppost.setEntity(se);
    response = httpclient.execute(httppost);



            // Sends data to server

        StringEntity se = new StringEntity(holder.toString());

        se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
                "application/json"));

        httppost.setEntity(se);

        response = httpclient.execute(httppost);

        resp = response.toString();

        String responseServer = EntityUtils.toString(response.getEntity());
于 2012-10-15T06:59:25.217 に答える
0

あなたと同じ問題を抱えているときにこの投稿を見ました

HttpClient を使用した HTTP Post リクエストに 2 秒かかるのはなぜですか?

動作しているかどうか確認できますか?

HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpClient httpclient = new DefaultHttpClient(params);
于 2012-10-15T09:37:38.460 に答える