2016-08-03 9 views
0

アンドロイドからサーバーに投稿を送信しようとしていますが、実行中にクラッシュします。 エラーが発生したかどうかはわかりません。アンドロイドスタジオでHTTPリクエストを監視する方法を理解できませんでした。 は、ここに私のコード行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

インターネット接続許可が与えられているか – Debojyoti

答えて

1

私はあなたがアンドロイドスレッド管理についてthis articleを読むことをお勧めします。 UIをフリーズするメインスレッドでネットワークを実行しようとしているので、「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

感謝の先生にお答え@ManuToMatic以下を確認してnot.Also場合、私は今日、新しい事を学びました確認してください:) I JavaとAndroidにはとても新しい –

2

メインスレッド(つまり、MainActivityまたは別のビュー)でネットワークに接続することはできません。

代わりにAsyncTaskを作成し、そこからWebに接続してください。

関連する問題