3 votes

Le callback de la mise en file d'attente n'a pas été appelé

J'utilise retrofit2 et j'ai constaté que parfois le callback pour Call.enqueue n'est pas appelé.

Retrofit retrofit = new Retrofit.Builder().baseUrl(usuarioService.BASE_URL).addConverterFactory(GsonConverterFactory.create(usuarioService.g)).build();
usuarioService service = retrofit.create(usuarioService.class);
Call<String> user = service.verificarUsuario(login.getText().toString(), senha.getText().toString());
user.enqueue(new retrofit2.Callback<String>() {
    @Override
    public void onResponse(Call<String> call, Response<String> response) {
        String resultado = response.body();

        if (resultado.equals("false")) {
            Toast toast = Toast.makeText(MainActivity.this, "Senha ou usuário não existente", Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.TOP | Gravity.CENTER_VERTICAL, 0, 0);
            toast.show();
        } else {
            if (resultado.equals("true")) {
                Toast toast = Toast.makeText(MainActivity.this, "ACESSO PERMITIDO", Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
                toast.show();

                Intent intent = new Intent(MainActivity.this, MenuDrawer.class);
                intent.putExtra("chave1", login.getText().toString());

                startActivity(intent);

                finish();
            }
        }
    }

    @Override
    public void onFailure(Call<String> call, Throwable t) {
    }
});

Soudainement, ce problème commence à se produire, quelqu'un sait-il comment le résoudre ? Ces problèmes ne se produisaient pas jusqu'à il y a quelques instants, je ne sais pas ce qui s'est passé.

Cela ne se produit que lorsque j'utilise les données mobiles, mais pas lorsque j'utilise le WIFI.

2voto

pepiino Points 141

Vous avez une implémentation vide de onFailure, donc le callback peut être appelé mais rien ne se passe. Essayez d'enregistrer des informations dans la méthode onFailure.

@Override
public void onFailure(Call<String> call, Throwable t) {
   Log.w("MyTag", "requestFailed", t); 
}

Et vous verrez si la demande a échoué et pourquoi.

0voto

Lucas Charles Points 29

J'ai changé mon IP et je l'ai réparé. Je ne sais pas pourquoi. Mais ça marche. Merci beaucoup.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X