0

我有一个向服务器发送 http 请求并接收 JSON 进行处理的应用程序。我在物理设备和 Genymotion 上都对其进行了测试。

该应用程序在物理设备上运行良好,但在 Genymotion throws 上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 回答