如何解决Android中的NetworkonMainThreadException?

这个问题在这里已经有了答案:

  • 我该如何解决android.os.NetworkOnMainThreadException? 49个答案

  • 你的Exception实际上告诉你到底你做错了什么。 您没有使用另一个线程来执行NetworkOperations 。 相反,您在您的UI线程上执行网络操作,但无法(不)在Android上工作。

    连接到url的代码应该在AsyncTasks doInBackground()方法内执行,例如在UI线程之外。

    看看如何使用AsyncTask的这个问题: 如何使用AsyncTask


    使用下面的代码。

    private class UpdateTask extends AsyncTask<String, String,String> {
         protected String doInBackground(String... urls) {
    
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);
    
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();
            return null;
         }
    
     }
    

    并在你的ManinActivity使用下面的代码。

    new UpdateTask().execute();
    

    在您的活动onCreate方法中添加以下行

    StrictMode.ThreadPolicy policy = new
    StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    
    链接地址: http://www.djcxy.com/p/29531.html

    上一篇: How to fix NetworkonMainThreadException in Android?

    下一篇: HttpURLConnection is throwing exception