2017-12-13 4 views
-3

私はREST APIを使用するアプリケーションを作成していますが、これは正方形でOkhttp APIを使用しています。致命的な例外:AsyncTask#4

以前の私はthis質問を参照することにより、エラー

E/WindowManager: android.view.WindowLeaked: Activity com.example.pawadube.helloworld.MainActivity has leaked window [email protected][Connecting] that was originally added here 
                       at android.view.ViewRootImpl.<init>(ViewRootImpl.java:417) 
                       at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:331) 

の下になっていた、私は、進行状況ダイアログを指すようにonDestroyメソッドにコードを追加しました。 そして今、私はエラーボタンで

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #4 
                      Process: com.example.pawadube.helloworld, PID: 31149 
                      java.lang.RuntimeException: An error occurred while executing doInBackground() 
                       at android.os.AsyncTask$3.done(AsyncTask.java:318) 
                       at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
                       at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
                       at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                       at java.lang.Thread.run(Thread.java:761) 
                       Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
                       at android.os.Handler.<init>(Handler.java:200) 
                       at android.os.Handler.<init>(Handler.java:114) 
                       at android.widget.Toast$TN.<init>(Toast.java:346) 
                       at android.widget.Toast.<init>(Toast.java:101) 
                       at android.widget.Toast.makeText(Toast.java:260) 
                       at com.example.pawadube.helloworld.MainActivity$LoginServerTest.doInBackground(MainActivity.java:172) 
                       at com.example.pawadube.helloworld.MainActivity$LoginServerTest.doInBackground(MainActivity.java:130) 
                       at android.os.AsyncTask$2.call(AsyncTask.java:304) 
                    

の下に取得するには、私は私がこだわっている、私を助けてくださいコード

new LoginServerTest().execute(username, password, url); 


class LoginServerTest extends AsyncTask<String, Integer, String[]> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     progressDoalog.show(); 
    } 

    @Override 
    protected void onPostExecute(String[] strings) { 
     super.onPostExecute(strings); 
     progressDoalog.dismiss(); 
    } 

    @Override 
    protected String[] doInBackground(String... strings) { 
     String username = strings[0]; 
     String password = strings[1]; 
     String url = strings[2]; 
     Log.d("Username: ", username); 
     Log.d("Password: ", password); 
     Log.d("URL--> ", url); 

     String credential = Credentials.basic(username, password); 
     OkHttpClient client = new OkHttpClient(); 

     Request request = new Request.Builder() 
       .url(url) 
       .get() 
       .addHeader("authorization", credential) 
       .addHeader("content-type", "application/json") 
       .build(); 

     try { 
      Response response = client.newCall(request).execute(); 
      if (response.isSuccessful()) { 
       String body = response.body().string(); 
       String code = response.code() + ""; 
       String[] output = {code, body}; 
       Toast.makeText(MainActivity.this, "Username/Password is correct." + response.body().string(), Toast.LENGTH_LONG).show(); 
       Log.d("Responce-->", response.body().string()); 
       return output; 
      } else { 
       Toast.makeText(MainActivity.this, "Username/Password is correct.", Toast.LENGTH_LONG).show(); 
       Log.d("Responce-->", response.body().string()); 
       return null; 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 


} 

の下に追加されましたをクリックします。

+0

このGETリクエストですか? –

+0

はい、そのリクエストを取得します。トーストを取り除いても、問題は解決しません。 –

答えて

-1

バックグラウンドスレッドでToastと対話することはできません。 Toast.makeText().show()コードをonPostExecute()に移動します。

関連する問題