2015-02-24 7 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

Если вы используете улов вместо броска, то вы всегда можете распечатать трассировку исключения и знать причину App выхода. –

+0

Позвольте мне угадать, еще один вопрос NOMTE – Selvin

+0

NOMTE = NetworkOnMainThreadException – samgak

ответ

3

Я решил эту проблему с помощью следующего кода,

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

Спасибо человеку! Ты спас 3 часа! –

+0

Большое спасибо. – iqbalsyamsu

0

Android построен, чтобы противостоять разработчикам сделать сетевые запросы в главном (UI) нити. Изменение политики Thread не является решением. Вы должны использовать 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(); 

} 

См андроид документация: http://developer.android.com/reference/android/os/AsyncTask.html

Смежные вопросы