我正在尝试使用改型从网络访问数据(数据为gson形式,我正在使用WordPress REST API),但无法访问。它向我显示了一个错误,例如数据为空,看起来好像翻新无法找到数据,但是一切都很好。。。看起来代码很好,我也不知道如何解决这个问题。请帮助我,我是一名新开发人员。这需要我3天的时间
每当我调用getRetrofit()方法时,它都可以正常工作...但是当我调用getImageRetrofit()时,则该方法似乎无法正常工作...该方法返回null值,如logcat所示:
ImageInfo:info:null
private void getRetrofit() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
RetrofitArrayApi service = retrofit.create(RetrofitArrayApi.class);
Call<List<WPPost>> call = service.getPostInfo();
call.enqueue(new Callback<List<WPPost>>() {
@Override
public void onResponse(Call<List<WPPost>> call, Response<List<WPPost>> response) {
Log.e("Latest","response: "+response.body());
for (int i=0; i<response.body().size(); i++)
{
Log.e("main ","title "+response.body().get(i).getTitle().getRendered() + " " +
response.body().get(i).getId() );
String tempDate = response.body().get(i).getDate();
tempDate = tempDate.replace("T"," ");
String tempImageHref = response.body().get(i).getLinks().getWpFeaturedmedia().get(0).getHref();
Log.e("Href", "onResponse: "+tempImageHref);
String link = response.body().get(i).getLink();
Log.e("PostLink",link);
getImageRetrofit(tempImageHref);
list.add(new LatestModel(
response.body().get(i).getTitle().getRendered(),
tempDate,
tempImageHref,
LatestModel.IMAGE_TYPE,
response.body().get(i).getLink()
)
);
}
adapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<List<WPPost>> call, Throwable t) {
t.printStackTrace();
}
});
}
private void getImageRetrofit(String ImageHref) {
Log.e("getImageRetrofit","called "+ImageHref);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
RetrofitArrayApi service = retrofit.create(RetrofitArrayApi.class);
Call<List<WPPostImage>> callImage = service.getImageInfo(ImageHref);
callImage.enqueue(new Callback<List<WPPostImage>>() {
@Override
public void onResponse(Call<List<WPPostImage>> call, Response<List<WPPostImage>> response) {
Log.e("ImageInfo","info: "+response.body());
}
@Override
public void onFailure(Call<List<WPPostImage>> call, Throwable t) {
Log.e("Link Failed: ",": t.printStackTrace()" );
}
});
}
这是我的RetrofitArrayApi接口。
public interface RetrofitArrayApi {
@GET("wp-json/wp/v2/posts?per_page=4")
Call<List<WPPost>> getPostInfo();
@GET("{id}")
Call<List<WPPostImage>> getImageInfo(@Path("id") String ImageHref); }
最佳答案
您在评论中说temImageHref: mubashirsaddique.com/wp-json/wp/v2/media/1780
,而您的基本网址也是baseUrl = "mubashirsaddique.com"
。因此,在呼叫getImageInfo
时,您将请求发送到此地址mubashirsaddique.com/mubashirsaddique.com/wp-json/wp/v2/media/1780。
更改您的getPostInfo
服务。它应该仅返回id(在您的情况下为1780)作为href值并修改RetrofitArrayApi
。
@GET("wp-json/wp/v2/media/{id}")
Call<List<WPPostImage>> getImageInfo(@Path("id") String ImageHref);