我正在尝试使用改型从网络访问数据(数据为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);

10-01 06:02
查看更多