繁体   English   中英

每当我使用改造从网络访问数据时,它工作正常,但第二次无法使用改造通过网络找到数据

[英]whenever i acces data from network using retrofit it works fine but in 2nd time can't find data through network using retrofit

我正在尝试使用改造从网络访问数据(数据采用 gson 的形式,我使用的是 WordPress rest API)但无法访问。 它向我显示了一个错误,如 data is null 看起来像改造找不到数据但一切都很好......看起来代码很好,我不知道如何解决这个问题。 请帮助我我是一个新的开发人员..这需要我的 3 天

每当我调用 getRetrofit() 方法时它都可以正常工作......但是当我调用 getImageRetrofit() 然后看起来这个方法不起作用......这个方法返回空值,如 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); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM