0

HTTP 要求をサーバーに送信し、処理のために JSON を受信するアプリがあります。物理デバイスと Genymotion の両方でテストします。

アプリは物理デバイスでは問題なく動作しますが、Genymotion ではスローしNetworkOnMainThreadExceptionます。

私は例外を追跡しましたが、これは問題のある部分です:

..
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));

// Exception on this line:
HttpResponse httpResponse = httpClient.execute(httpPost);
//
HttpEntity httpEntity = httpResponse.getEntity();
...

Genymotion がサーバーに接続してリクエストを実行できないようです。しかし、そのブラウザはサイトを問題なくロードします。

それで、誰がここで何がうまくいかないのか知っていますか?

4

1 に答える 1

0

私は問題が何であるかを見つけました:

この回答で説明されているように、API 11 以降NetworkOnMainThreadException、メイン スレッドで実行時間の長いタスク (http 通信など) を使用して通知するために がスローされます。

問題を使用AsyncTaskすることで解決され、すべてが正常に機能しました。

于 2013-11-04T13:10:27.360 に答える