0

このコードを使用して、Android アプリケーションで HTTP リクエストを実行しています。

    try 
    {
        HttpPost post = new HttpPost(<URL>);
        HttpClient client = new DefaultHttpClient();
        HttpResponse response = client.execute(post);
        HttpEntity entity = response.getEntity();
        String responseText = EntityUtils.toString(entity);

        parseResponce(responseText);
    } 
    catch (Exception e) 
    {
        Log.e("http post error : ", e.getMessage());
    }

リクエストは Android 2.3 で動作していますが、Android 4.0.4 では応答がありません。なぜだめですか?

4

2 に答える 2

1

Take a look at this blog post.

The problem is most likely that you are performing a potentially expensive operation on the main UI thread. There's no way of knowing how long the HTTP request could take, so you should offload the work to a background thread using an AsyncTask, for example.

The reason why this works on Gingerbread but not on ICS is because Android 4.0 is much stricter about abuse against the UI thread (and it will go as far as to crash your application if you abuse it too much).

于 2012-10-07T15:55:56.587 に答える
0

UI スレッドでネットワーク操作を行うため、問題が発生していると思われます。AsyncTask または Java スレッド フレームワークを使用してみてください。

于 2012-10-07T15:52:24.313 に答える