J'utilise retrofit pour obtenir des données de l'API Flickr. La méthode que je fais l'appel ressemble à ceci:Comment puis-je déboguer mon appel API Retrofit?
public static List<String> getImageIds(int size) {
Call<PhotosList> call = flickrService.getPhotos(apiKey, format, "1");
Log.d("TEMP_TAG", "photo url: " + call.request().url().toString());
photoIds = new ArrayList<String>();
call.enqueue(new Callback<PhotosList>(){
@Override
public void onResponse(Call<PhotosList> call, Response<PhotosList> response) {
Log.d("TEMP_TAG", "it's getting here");
PhotosList photosList = response.body();
List<Photo> photos = photosList.getPhotos().getPhoto();
for(Photo photo : photos) {
Log.d("TEMP_TAG", "adding photo id to list: " + photo.getId());
photoIds.add(photo.getId());
}
}
@Override
public void onFailure(Call<PhotosList> call, Throwable t) {
// TODO: Clean up
Log.d("TEMP_TAG", "photoId: ");
}
});
Log.d("TEMP_TAG", "it's getting here too");
return photoIds;
}
Cependant, il est jamais entrer dans la méthode onResponse()
. La première instruction de journal au sein de onResponse()
n'imprime jamais, pas plus que l'instruction de journal dans onFailure()
. Lorsque j'essaie d'entrer l'URL renvoyée par call.request().url().toString()
dans le navigateur, cela fonctionne correctement et j'obtiens le JSON attendu. Pourquoi ma méthode enqueue()
ne tire-t-elle jamais?
Merci pour toute aide!
Ce nest pas une vraie réponse, mais ma suggestion personnelle est toujours utiliser quelque chose comme Charles ou Postman lors du test de nouveaux appels de réseau. De cette façon, vous pouvez voir ce que vous envoyez, et ce que vous recevez dans leurs formats originaux. – TooManyEduardos
En outre, supprimer le journal 'Log.d (" TEMP_TAG "," photo url: "+ appel.request(). Url(). ToString());' et voir si cela fonctionne (l'élément call.request() pourrait être consommer l'appel avant même que cela arrive) – TooManyEduardos