2015-02-24 134 views
1

我有我的Android项目的问题,的Android HttpURLConnection的错误

我想打电话给PHP页面get方法,我使用HttpURLConnection类, 当我运行这个应用程序给出一个错误“应用程序已停止”

这是我的代码

public void someFunction() throws IOException { 

      String inputLine = ""; 

    URL url = new URL("http://www.domain.com/demo.php?test=abc"); 
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

      InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
      try { 
       BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
       StringBuilder result = new StringBuilder(); 
       String line; 
       while((line = reader.readLine()) != null) { 
        result.append(line); 
       } 

      } finally{ 
        in.close(); 
       } 
} 

我应该怎么办?

谢谢。

+0

如果使用捕捉,而不是扔那么你可以随时打印异常跟踪和了解应用程序退出的原因。 – 2015-02-24 01:01:22

+0

让我猜,又一个NOMTE的问题 – Selvin 2015-02-24 01:05:12

+0

NOMTE = NetworkOnMainThreadException – samgak 2015-02-24 01:13:39

回答

3

我已经解决了这个问题,用下面的代码,

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
+0

谢谢你!你已经救了我3个小时! – 2016-02-09 17:57:28

+0

非常感谢。 – iqbalsyamsu 2016-07-14 12:44:05

0

Android是建立抵制开发商,使主(UI)线程网络请求。更改线程策略不是解决方案。你应该使用AsyncTask来完成所有的网络请求。

public void someFunction() throws IOException { 

    AsyncTask task = new AsyncTask<Void,StringBuilder,StringBuilder>() { 
     @Override 
     protected StringBuilder doInBackground(Void... params) { 

String inputLine = ""; 

URL url = new URL("http://www.domain.com/demo.php?test=abc"); 
     HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

     InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
      StringBuilder result = new StringBuilder(); 
      String line; 
      while((line = reader.readLine()) != null) { 
       result.append(line); 
      } 

     } finally{ 
       in.close(); 
      } 

      return result; 
     } 


     @Override 
     protected void onPostExecute(StringBuilder result) { 
      super.onPostExecute(o); 

     } 
    }; 
    task.execute(); 

} 

请参阅Android文档:http://developer.android.com/reference/android/os/AsyncTask.html

相关问题