2016-07-26 3 views
0

私はアンドロイドでログインアクティビティを書き込みました。私は私のコードはここにこれに、このような非同期タスクをしたい非同期タスクはOnResponse関数を省略します

public class UserLoginTask extends AsyncTask<Void, Void, Boolean> { 
     boolean succes; 
    private final String mEmail; 
    private final String mPassword; 

    UserLoginTask(String email, String password) { 
     mEmail = email; 
     mPassword = password; 
    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 

     Retrofit retrofit = LoginService.buildRetrofit(); 
     LoginApiInterface apiService = retrofit.create(LoginApiInterface.class); 
     Call<LoginPojo> login = apiService.login(mEmail, mPassword); 
     login.enqueue(new Callback<LoginPojo>() { 
      @Override 
      public void onResponse(Call<LoginPojo> call, Response<LoginPojo> response) { 
       int c = response.raw().code(); 
       if (c == 200) { 
        succes = true; 
        token = response.body().getAuthorization(); 
       } else { 
        succes = false; 
        mPasswordView.setError(getString(R.string.error_incorrect_password)); 
       } 
      } 
      @Override 
      public void onFailure(Call<LoginPojo> call, Throwable t) { 
       succes = false; 
       mPasswordView.setError(getString(R.string.error_incorrect_password)); 
      } 
     }); 


     return succes; 
    } 

すべてが正常に見えるが、それは唯一、それは常に返すの呼びかけまでのコードを実行します

+0

「yeaah私は私の方法は、サーバから別のコードを返す知っているが、問題はそのコードでは、それはだだけcallメソッドまで実行されますOnResponse関数が実行されることはありません "、どのように実際にこれを見つけましたか? –

+0

私はこのコードをデバッグしています – neir45

+0

その後、 'login.enqueue'がないところでコールバックの中にブレークポイントを追加します。このようにして、コールバックが呼び出されたときにデバッグできるはずです。 –

答えて

0
(私はそれが理由authorizathionの不足の偽の知っている)変数大成功

if(c==200)の場合、応答コードをチェックしないでください。応答コードは、ネットワーク応答がOKであることを示すことです。ネットワーク応答エラー/サーバー障害がない限り、常に200を返します。あなたは、あなたがサーバーから成功コードを返す必要があり、APIが返すの成功を確認したい場合は

int c = response.body().getstatus(); 
       if (c == 1) { 
        succes = true; 
        token = response.body().getAuthorization(); 
       } else { 
        succes = false; 
         mPasswordView.setError(getString(R.string.error_incorrect_password)); 
       } 
+0

okですが、それほど問題はありませんbeacuseコードは以前に壊れています – neir45

+0

私のメソッドはサーバーから別のコードを返しますが、メソッドを呼び出すと、return文にジャンプします。OnResponse関数は実行されません – neir45