2017-08-28 1 views
-3

私はアンドロイドスタジオでこのようにPOSTリクエストをしようとしています。AndroidスタジオでHTTP POSTリクエストを行う方法は?

btnSignin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 


      //submitForm(); 
      tryLogin("[email protected]", "Test1234"); 
     } 
    }); 





protected void tryLogin(String mUsername, String mPassword) 
{ 
    HttpURLConnection connection; 
    OutputStreamWriter request = null; 

    URL url = null; 
    String response = null; 
    String parameters = "email="+mUsername+"&password="+mPassword; 
    StrictMode.ThreadPolicy policy = new 
    StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 

    try 
    { 
     url = new URL("URL"); 
     connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoOutput(true); 
     connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     connection.setRequestMethod("POST"); 

     request = new OutputStreamWriter(connection.getOutputStream()); 
     request.write(parameters); 
     request.flush(); 
     request.close(); 
     String line = ""; 
     InputStreamReader isr = new InputStreamReader(connection.getInputStream()); 
     BufferedReader reader = new BufferedReader(isr); 
     StringBuilder sb = new StringBuilder(); 
     while ((line = reader.readLine()) != null) 
     { 
      sb.append(line + "\n"); 
     } 
     // Response from server after login process will be stored in response variable. 
     response = sb.toString(); 
     // You can perform UI operations here 
     Toast.makeText(this,"Message from Server: \n"+ response, 0).show(); 
     isr.close(); 
     reader.close(); 

    } 
    catch(IOException e) 
    { 
     // Error 
    } 

しかし、アプリがクラッシュし、私はこのようなエラーが出る -

致命的な例外:メイン

プロセス:テスト、PID:19928

android.os.NetworkOnMainThreadExceptionでの android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:> 1425)

java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:102)で私は、マニフェストファイル内のインターネットアクセス権を追加しました。 これはAsyncTaskでやったわけではないからですか? これを修正するにはどうすればよいですか?

+0

使用AsyncTask ..... –

+1

あなたが持っているので、あなたは...メインスレッド上でのネットワーク操作を実行することはできませんasynctask – AbhayBohra

+1

を使用して、ネットワーク操作に別のスレッドを使用します。この場合、asynctaskは簡単です – AAA

答えて

-1

あなたはこのスレッドでネットワークオペレーションを入れたりasynctaskまたは他のライブラリを使用することができます

new Thread(new Runnable() { 
      public void run(){   
      txt1.setText("Thread!!"); 
      } 
     }).start(); 
関連する問題