我有一个应用程序,它向服务器发送一个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无法连接到服务器来执行请求。但它的浏览器加载网站就好了。
所以,谁知道这里出了什么问题?
答案 0 :(得分:0)
我发现了问题所在:
正如本answer中所述,自API 11以来,NetworkOnMainThreadException
被抛出以通知在主线程中使用长时间运行的任务(如http通信)。
通过使用AsyncTask
,问题得到解决,一切正常。