Tôi đang sử dụng trang bị thêm để lấy một số dữ liệu từ api Flickr. Phương pháp tôi thực hiện cuộc gọi trông giống như sau:Tôi làm cách nào để gỡ lỗi cuộc gọi API trang bị thêm?
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;
}
Tuy nhiên, nó không bao giờ đi vào phương thức onResponse()
. Câu lệnh nhật ký đầu tiên trong phạm vi onResponse()
không bao giờ in, cũng không có câu lệnh nhật ký trong onFailure()
. Khi tôi thử nhập URL được trả về bởi call.request().url().toString()
trong trình duyệt, nó hoạt động tốt và tôi nhận được JSON mong đợi. Tại sao phương pháp enqueue()
của tôi không bao giờ được kích hoạt?
Cảm ơn bạn đã trợ giúp!
này isnt một câu trả lời thật, nhưng đề nghị cá nhân của tôi là luôn luôn sử dụng một cái gì đó giống như Charles hoặc Postman khi kiểm tra các cuộc gọi mạng mới. Bằng cách đó bạn có thể thấy những gì bạn gửi và những gì bạn nhận được ở định dạng ban đầu của họ. – TooManyEduardos
Ngoài ra, hãy xóa nhật ký 'Log.d (" TEMP_TAG "," url ảnh: "+ call.request(). Url(). ToString());' và xem nó có hoạt động hay không (phần tử call.request() có thể tiêu thụ cuộc gọi trước khi nó xảy ra) – TooManyEduardos