Retrofit onFailure не работает в методе входа - PullRequest
0 голосов
/ 30 апреля 2019

Я вызываю метод входа в систему из Laravel с помощью Retrofit, моя проблема в том, что при написании правильного имени пользователя и пароля он открывает другое действие и все в порядке, но при написании неправильной информации он ничего не открывает, но не открываетпоказать сообщение об ошибке либо.Чего не хватает?

Код Laravel:

    public function login(Request $request) {

    $assistant = DB::table('assistants')
        ->where('username', $request->input('username'))
        ->where('mot_de_passe', $request->input('mot_de_passe'))
        ->first();


    if($assistant != null){

        return response()->json ($assistant);
    }else{
        $returnData = array(
            'status' => 'false',
            'message' => 'write some message..');
        return response()->json ($returnData ,500  );
    }}

Модернизация:

      IAssistant iAssistant= APIClient.getClient().create(IAssistant.class);


              iAssistant.login(username.getText().toString(),password.getText().toString()).enqueue(new Callback<Assistant>() {
                @Override
                public void onResponse(retrofit2.Call<Assistant> call, Response<Assistant> response) {

                if (response.isSuccessful()){
                        startActivity(new Intent(getApplicationContext(), BottomNavigation.class));
                    Toast.makeText(getApplicationContext(),"assistant"+response.body().getNom(),Toast.LENGTH_LONG).show();

                 }}

                @Override
                public void onFailure(retrofit2.Call<Assistant> call, Throwable t) {

                    Toast.makeText(getApplicationContext(),"'error",Toast.LENGTH_LONG).show();
                    Log.v("tag!!!!!!!!!!","error"+t.getMessage());

                }
                });

1 Ответ

0 голосов
/ 30 апреля 2019

При просмотре из официального javadoc .

onFailure(Call<T> call, Throwable t)

Вызывается, когда происходит сетевое исключение во время разговора с сервером или когда возникает непредвиденное исключение, создающеезапрос или обработка ответа.

onResponse(Call<T> call, Response<T> response)

Вызывается для полученного ответа HTTP.

В вставляемом кодекажется, вы получаете HTTP-ответ.

Хорошо, это ответ с кодом 500, поэтому не очень хороший, но в любом случае.

Вот почему в Response есть метод isSuccessful(), как это объясняется в Подробности метода

onResponse() Детали методаthe doc

Примечание. Ответ HTTP может по-прежнему указывать на сбой уровня приложения, например 404 или 500. Вызовите Response.isSuccessful (), чтобы определить, указывает ли ответ на успех.

Чтобы вы могли справиться с этим, обновите свой код следующим образом

public void onResponse(retrofit2.Call<Assistant> call, Response<Assistant> response) {
    if (response.isSuccessful()){
        startActivity(new Intent(getApplicationContext(), BottomNavigation.class));
    } else {
     // Handle your 500 here
    }
}
...