2016-07-26 2 views
0

로그인 활동을 Android에 작성했습니다. 내 코드는 여기에이 같은 비동기 작업을 원하는비동기 작업에서 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 난 내 방법은 서버에서 서로 다른 코드를 반환 알고 있지만 문제는 그 코드는입니다 만 호출 방법까지 실행 OnResponse 함수는 결코 수행되지 않습니다. ", 어떻게 실제로 이것을 찾았습니까? –

+0

이 코드를 디버깅 중이기 때문에 – neir45

+0

콜백 내에 'login.enqueue'가 아닌 중단 점을 추가하십시오. 이런 식으로 콜백이 호출 될 때 디버깅 할 수 있어야합니다. –

답변

0
(I 그것 때문에 authorizathion의 부족으로 잘못된 것을 알고) 변수 SUCCES

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

내 메소드가 서버에서 다른 코드를 반환하지만 문제는 코드가 호출 될 때까지만 실행됩니다. 방법을 누른 다음 그것은 진술을 반환하는 점프의 OnResponse 기능은 수행되지 않습니다 – neir45

관련 문제