当我实现这个它说“NetworkOnMainThreadException”。http获取android异步任务
有人可以发表一个有效的例子吗?
我已经尝试了许多不同的例子和库,但它没有奏效。我的代码:
private class HttpGetter extends AsyncTask<URL, Void, Void> {
@Override
protected Void doInBackground(URL... urls) {
// TODO Auto-generated method stub
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(String.valueOf(urls[0]));
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
Log.v("Getter", "Your data: " + builder.toString()); //response data
} else {
Log.e("Getter", "Failed to download file");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
你确定这是你执行http任务的唯一代码吗?你可以显示logcat吗? – 2014-10-20 14:47:58
显示你如何调用它并解释*如何*它不工作。你仍然得到'NetworkOnMainThreadException'或其他事情发生?另外,这是所有的任务代码?你重写'AsyncTask'的其他方法吗? – codeMagic 2014-10-20 14:48:39
你应该执行网络,你不应该在另一个地方 – joao2fast4u 2014-10-20 14:50:20