2016-04-11 3 views
0

Я использую модификацию с Rxjava для получения ответа от API, поскольку вы можете видеть метод, который я использую. Я не вижу, что происходит в отклике и в отключении. Мне не нужно потому что я предоставляю GsonConverter для модернизации, но по какой-то причине отладки мне нужно увидеть ответ, исходящий от API. Как я могу это сделать, какой код мне нужно добавить.Add Response call back при использовании retrofit с rxjava

public interface ProductApiService 
{ 
    String END_POINT = "http://beta.site.com/index.php/restmob/"; 

    @GET(Url.URL_PRODUCT_API) 
    Observable<Product> getProducts(@Query("some_id") String cid); 

    class Creator 
    { 
     public static ProductApiService getProductAPIService() { 
      Gson gson = new GsonBuilder() 
        .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") 
        .create(); 
      Retrofit retrofit = new Retrofit.Builder() 
        .baseUrl(ProductApiService.END_POINT) 
        .addConverterFactory(GsonConverterFactory.create(gson)) 
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
        .build(); 

      return retrofit.create(ProductApiService.class); 
     } 
    } 
} 

ответ

2

Вы можете сделать это только в модернизированных 2: Измените тип возвращаемого включить Response:

@GET(Url.URL_PRODUCT_API) 
Observable<Response<Product>> getProducts(/* ...etc... */); 

Вы также можете использовать Observable<Result<Product>>, если вы хотите увидеть все возможные ошибки в onNext (включая IOException, который обычно использует onError).

0

Подход Даниэля Лью быстрый и содержит наименьшее количество кодовых табличек котлов. Однако это может заставить вас реорганизовать вашу сетевую логику. Поскольку вы упомянули об этом для целей отладки, возможно, использование сконфигурированного OkHttpClient с Interceptors - это менее навязчивая стратегия.

OkHttpClient httpClient = new OkHttpClient.Builder() 
    .addInterceptor(new Interceptor() { 
     @Override 
     public Response intercept(Chain chain) throws IOException { 
      Request req = chain.request(); 
      Response resp = chain.proceed(req); 
      // ... do something with response 
      return resp; 
     } 
    }) 
    .build(); 

Retrofit retrofit = new Retrofit.Builder() 
    .client(httpClient) 
    .baseUrl(ProductApiService.END_POINT) 
    .addConverterFactory(GsonConverterFactory.create(gson)) 
    .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
    .build(); 
Смежные вопросы