Bonsoir le forum,
C'est après de longues heures devant mon écran à essayer de bricoler mon projet android que je décide de me tourner vers vous !
J'utilise retrofit pour aller quérir des infos sur la météo (classique).
Jusque là tout va bien, j'ai réussi à faire mon appel, et à faire des logs du résultat, qui me prouve que l'appel se passe bien.
Cependant la ou j'ai un gros problème, c'est que je n'arrive pas a exploité ce résultat, puisqu'il semble bloqué dans la callback de retrofit.
J'ai beau essayer toutes sortes de manière de l'en sortir, pas moyen..
Un petit bout de code:
Admettons que j'utilise ce bout de code dans une classe possédant un champ de type CurrentWeather.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://api.openweathermap.org/data/2.5/") .addConverterFactory(JacksonConverterFactory.create()) .build(); API api = retrofit.create(API.class); Call<CurrentWeather> call = api.getLastMessage("london"); call.enqueue(new Callback<CurrentWeather>() { @Override public void onResponse(Call<CurrentWeather> call, Response<CurrentWeather> response) { if (response.isSuccessful()) { response.body() contient mon résultat, je peux l afficher avec les logD donc il est bien là et correct } else { Log.d("FAILURE", "Shit happens :/"); } } @Override public void onFailure(Call<CurrentWeather> call, Throwable t) { // something went completely south (like no internet connection) Log.d("Error", t.getMessage()); } });
J'aimerai tout simplement pouvoir dire dans la callback OnResponse:
this.currentWeather = response.body();
Mes recherches m'ont montré que cela semble impossible, mais alors,
Comment diable est-ce que je suis censé exploité ma réponse?
J'ai essayé différentes manières, appels asynchrones, synchrones, passer par des fonctions tiers, mettre ça dans mes classes, dans mes fragments..
Bref autant dire que j'ai fais tout et n'importe quoi mais que finalement le résultat est toujours le même:
Quand j'essai d'accéder à la variable qui est censé contenir mon résultat, en dehors de la callback, je mange un nullpointerexception bête et méchant.
Je reste dans le coin, je peux fournir plus de code si nécessaire mais j'imagine que le profane que je suis passe simplement à côté de la solution,
et que vous pourrez m'éclairer facilement.. J'avoue ne pas être expert JAVA, même si j'en ai bouffé pas mal je ne suis pas super familier avec les callback.
Merci d'avance pour votre aide !![]()
Partager