【发布时间】:2020-02-03 11:03:05
【问题描述】:
我正在尝试开发一个应用程序来调用 Flickr API 方法搜索以获取 JSON 响应,并且每次我这样做时,它都会返回一个对象引用,例如 'com.rdev.imagegallery.obj.FlickrPhotos@bb2935b' 而不是 JSON回复。 我正在使用 MVVM 并阅读
public ApiResponse(Response<T> response) {
code = response.code();
Timber.d("====Api Response");
if(response.isSuccessful()) {
Timber.d("response is success");
body = response.body();
Timber.d("Body:"+body.toString());<---------- response: com.rdev.imagegallery.obj.FlickrPhotos@bb2935b
errorMessage = null;
}
(...)
我正在使用改造来调用 Flickr API,并传递 URL
return new Retrofit.Builder()
.baseUrl(BuildConfig.MAINBASEURL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(new LiveDataCallAdapterFactory())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
//call API Flickr
@Override
public LiveData<ApiResponse<FlickrPhotos>> getValues(String url) {
Timber.d("URL:"+url);
return mMainApiHelper.getValues(url);
}
网址正确(我已经测试过了)。我有调用 API 的接口。
公共接口 MainApiHelper {
@GET
LiveData<ApiResponse<FlickrPhotos>> getValues(@Url String url);
}
我有一个类 FlickPhotos 来“获取”结果(每次我调用 API 时都会得到一个这种类型的对象):
public class FlickrPhotos {
@SerializedName("page")
@Expose
private int page;
@SerializedName("pages")
@Expose
private String pages;
@SerializedName("perpage")
@Expose
private int perpage;
(...)
我试图验证调用后我得到了哪些值,它们都是空的(所以我认为问题出在调用上)
Timber.d("Answer:"+apiResponse.body.getPages());--->null
Timber.d("Answer:"+apiResponse.body.getPage());--->0
Timber.d("Answer:"+apiResponse.body.getStart());--->null
【问题讨论】:
-
我不是故意的,但是……如果你不给我们看相关的代码,我们怎么能开始呢?您在此处显示的内容类似于说:我做了一个蛋糕,看起来很糟糕,我做错了什么?。
-
@MartinMarconcini 请告诉我你想让我给你看什么代码?我得到的是一个对象引用,而不是一个“正常”的响应。请帮忙
-
您可以考虑扩展您的minimal reproducible example 以显示您实际如何进行此Web 服务调用以及您如何使用
ApiResponse。例如,如果您正在使用 Retrofit,那么您得到的正是您告诉 Retrofit 做的事情:调用 Web 服务并将响应转换为您的com.rdev.imagegallery.obj.FlickrPhotos类的实例。 -
@CommonsWare 说了什么。
-
@CommonsWare 我添加了更多信息。