當我實現這個它說「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