无法打印响应数据

问题描述 投票:0回答:1

我试图从api中获取数据,我做了响应模型,apiInterface,ApiClient等,一切都很好,没有代码错误,但问题是响应体是空的。在这个例子中,我决定知道问题的原因,但我不知道。

Api: http:/api.serpstack.comsearch?access_key=8cdb389dedab3a1b462de83a67921de2&query=+%22cart%22%20-intitle:%22profiles%22%20-url:%22dir+%22+site:linkedin.comin+OR+site:linkedin.compub。

/ Logcat : Itrace: []

/MainActivity : public class MainActivity extends AppCompatActivity {

        ApiClient apiClient;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          apiClient = new ApiClient().getInstance(MainActivity.this);
           Call<Response>call = apiClient.sNewsApi.getResultSearch("8cdb389dedab3a1b462de83a67921de2","+%22cart%22%20-intitle:%22profiles%22%20-inurl:%22dir/+%22+site:linkedin.com/in/+OR+site:linkedin.com/pub/");
            call.enqueue(new Callback<Response>(){
             @Override
                public void onResponse(Call<Response> call, retrofit2.Response<Response> response) {
                   if(response.isSuccessful()){
                      Log.i("trace"," "+response.body().getOrganicResults());
                    }else {
                      Log.i("trace","Not");
                   }
                }
                @Override
                public void onFailure(Call<Response> call, Throwable t) {
                    Log.i("trace","Not"+t.getMessage());
                }
            });
        }
    }



// ApiInterface :


public interface ApiInterface {

    @GET("search")
    Call<Response>getResultSearch(@Query("access_key") String access_key,@Query("query") String query);

}




    // ApiClient :

    public class ApiClient {

        public static final String NEWS_API_URL ="http://api.serpstack.com/";

        private static final Object LOCK = new Object();
        public static ApiInterface sNewsApi;

        public static ApiClient sInstance;

        public ApiClient() {

        }
        public static ApiClient getInstance(Context context) {
            if (sInstance == null || sNewsApi == null) {
                synchronized (LOCK) {

                    Cache cache = new Cache(context.getApplicationContext().getCacheDir(), 5 * 1024 * 1024);

                    Interceptor networkInterceptor = new Interceptor() {

                        @Override
                        public Response intercept(Chain chain) throws IOException {

                            CacheControl cacheControl = new CacheControl.Builder()
                                    .maxAge(1, TimeUnit.HOURS)
                                    .maxStale(3, TimeUnit.DAYS)
                                    .build();
                            return chain.proceed(chain.request())
                                    .newBuilder()
                                    .header("Cache-Control", cacheControl.toString())
                                    .build();
                        }
                    };
                    // For logging
                    HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY);
                    // Building OkHttp client
                    OkHttpClient client = new OkHttpClient.Builder()
                        ///    .cache(cache)
                            .addNetworkInterceptor(networkInterceptor)
                            .addInterceptor(loggingInterceptor)
                            .build();
                    // Configure GSON
                    Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new DateDeserializer()).create();
                    // Retrofit Builder
                    Retrofit.Builder builder = new Retrofit.Builder().
                    baseUrl(NEWS_API_URL).client(client).addConverterFactory(GsonConverterFactory.create(gson));
                    // Set NewsApi instance
                    sNewsApi = builder.build().create(ApiInterface.class);
                    sInstance = new ApiClient();
                }
            }
            return sInstance;
        }
    }

    // Response :

    public class Response{

        @SerializedName("request")
        private Request request;
        @SerializedName("pagination")
        private Pagination pagination;

        @SerializedName("organic_results")
        private List<OrganicResultsItem> organicResults;

        @SerializedName("search_information")
        private SearchInformation searchInformation;

        @SerializedName("search_parameters")
        private SearchParameters searchParameters;


        public Request getRequest(){
            return request;
        }

        public Pagination getPagination(){
            return pagination;
        }

        public List<OrganicResultsItem> getOrganicResults(){
            return organicResults;
        }

        public SearchInformation getSearchInformation(){
            return searchInformation;
        }

        public SearchParameters getSearchParameters(){
            return searchParameters;
        }
    }
java android retrofit2
1个回答
0
投票

很简单,只要加上这一行。

System.out.println(response.body());

这将显示你在响应中的内容,确保把这个放在

if (response.isSuccessful()) {
    System.out.println(response.body());
    Log.i("trace"," "+response.body().getOrganicResults());
} else {
    Log.i("trace","Not");
}
© www.soinside.com 2019 - 2024. All rights reserved.