Android NetworkOnMainThreadException与AsyncTask

Android NetworkOnMainThreadException与AsyncTask,android,android-asynctask,httprequest,networkonmainthread,Android,Android Asynctask,Httprequest,Networkonmainthread,我需要从我的android应用程序执行一些HTTP请求。 我根据需要使用AsyncTask,网络部分位于doInBackground中 这是我的请求类: public class AsyncRequest extends AsyncTask<Void, Integer, HttpResponse>{ private ProgressDialog dialog; private Activity activity; private HttpUr

我需要从我的android应用程序执行一些HTTP请求。 我根据需要使用AsyncTask,网络部分位于doInBackground中

这是我的请求类:

public class AsyncRequest extends AsyncTask<Void, Integer, HttpResponse>{

private     ProgressDialog  dialog;
private     Activity        activity;
private     HttpUriRequest  query;
private     HttpClient      client;
private     HttpResponse    response;
private     String          dialogMsg;
private     String          uri;

public String getUri() {
    return uri;
}

public void setUri(String uri) {
    this.uri = uri;
}

public AsyncRequest(Activity a, HttpUriRequest q, HttpClient c, String m) {
    query = q;
    client = c;
    activity = a;
    dialog = new ProgressDialog(a);
    dialogMsg = m;
}

@Override
protected void onPostExecute(HttpResponse res) {
    if (dialog.isShowing())
        dialog.dismiss();
}

protected void onPreExecute() {
    this.dialog.setMessage(dialogMsg);
    this.dialog.show();
}

@Override
protected HttpResponse  doInBackground(Void... arg0) {
    try {
        response = client.execute(query);
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }       
    return response;
}

protected   HttpResponse    getResponse() {
    return response;
}
}    
所以,我是一个android初学者,但我想当在主线程中执行与网络相关的代码时,会发现这个异常。但是我在doInBackground()方法中运行client.execute()。是调用execute().get()(在ui线程中)导致了问题吗

你有这个吗

response =  request.execute().get(3, TimeUnit.SECONDS);
调用
get()
使
AsyncTask
不再异步。它会阻止等待响应的ui线程。这将导致
NetworkOnMainThreadException

去掉
Get(3,TimeUnit.SECONDS)

只需使用
request.execute()
。您可以在
onPostExecute
中更新ui。您还可以将接口用作对活动的回调

在下面的链接中用黑带检查答案


重新格式化代码并发布日志,这就是问题所在。谢谢
response =  request.execute().get(3, TimeUnit.SECONDS);