2016-08-03 4 views
0

Я пытаюсь отправить сообщение на сервер с android, но при сбоях он падает. Я не вижу, возникали ли какие-либо ошибки, я не мог понять, как отслеживать HTTP-запросы в студии Android. Вот мой кодAndroid не может отправить сообщение

try { 
       String rtoken = FirebaseInstanceId.getInstance().getToken(); 
       Log.v("tokken", rtoken); 
       URL url = new URL("http://my website.com/yyy"); 
       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
       conn.setReadTimeout(15001); 
       conn.setConnectTimeout(15001); 
       conn.setRequestMethod("POST"); 
       conn.setRequestProperty("pid",jo.getString("parent_id")); 
       conn.setRequestProperty("sid",jo.getString("parent_id")); 
       conn.setRequestProperty("token",rtoken); 
       conn.setDoOutput(true); 

       OutputStream outputPost = new BufferedOutputStream(conn.getOutputStream()); 
       writeStream(outputPost); 
       outputPost.flush(); 
       outputPost.close(); 


      } catch (ProtocolException e1) { 
       e1.printStackTrace(); 
      } catch (MalformedURLException e1) { 
       e1.printStackTrace(); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } catch (JSONException e1) { 
       e1.printStackTrace(); 
      } 

и стек следов аварии (JsonParser.java:105) является линия

OutputStream outputPost = новый BufferedOutputStream (conn.getOutputStream());

enter image description here

Я действительно устал от этой проблемы в течение нескольких часов. Любая помощь будет оценена, спасибо,

+1

Пожалуйста, проверьте разрешение подключения к Интернету дается или not.Also проверить ниже @ManuToMatic ответить – Debojyoti

ответ

1

Я рекомендую вам прочитать this article об управлении андроидами. Вы пытаетесь сделать сеть в основном потоке, который блокирует пользовательский интерфейс, поэтому вы получаете исключение «NetworkOnMainThread». Попробуйте начать новую нить и сделать сети там, как:

(new Thread(){ 
     @Override public void run(){ 
      try { 
       String rtoken = FirebaseInstanceId.getInstance().getToken(); 
       Log.v("tokken", rtoken); 
       URL url = new URL("http://my website.com/yyy"); 
       HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
       conn.setReadTimeout(15001); 
       conn.setConnectTimeout(15001); 
       conn.setRequestMethod("POST"); 
       conn.setRequestProperty("pid",jo.getString("parent_id")); 
       conn.setRequestProperty("sid",jo.getString("parent_id")); 
       conn.setRequestProperty("token",rtoken); 
       conn.setDoOutput(true); 

       OutputStream outputPost = new BufferedOutputStream(conn.getOutputStream()); 
       writeStream(outputPost); 
       outputPost.flush(); 
       outputPost.close(); 


      } catch (ProtocolException e1) { 
       e1.printStackTrace(); 
      } catch (MalformedURLException e1) { 
       e1.printStackTrace(); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } catch (JSONException e1) { 
       e1.printStackTrace(); 
      } 
     } 
}).start(); 
+1

спасибо, сэр, я узнал нечто новое сегодня :) я я так новичок в Java и Android –

2

Вам не разрешено подключаться к сети в основной теме (например, MainActivity или другой вид).

Вместо этого создайте AsyncTask и подключитесь к сети оттуда.

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