【发布时间】:2018-01-20 14:52:47
【问题描述】:
我正在使用改造从 Flickr api 获取一些数据。我正在调用的方法如下所示:
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;
}
但是它永远不会进入onResponse() 方法。 onResponse() 中的第一条日志语句从不打印,onFailure() 中的日志语句也不会打印。当我尝试在浏览器中输入call.request().url().toString() 返回的 URL 时,它工作正常,并且我得到了预期的 JSON。为什么我的 enqueue() 方法永远不会触发?
感谢您的帮助!
【问题讨论】:
-
这不是一个真正的答案,但我个人的建议是在测试新的网络呼叫时始终使用 Charles 或 Postman 之类的东西。这样您就可以看到您发送的内容和收到的原始格式的内容。
-
另外,删除日志
Log.d("TEMP_TAG", "photo url: " + call.request().url().toString());并查看它是否有效(call.request() 元素可能在调用发生之前就已使用)
标签: android json rest retrofit retrofit2