2016-04-11 5 views
0

私は使用しているメソッドを見ることができるように、Rxjavaでレトロフィットを使用してAPIからレスポンスを取得しています。レスポンスには何が入っているのかわかりません。私はGsonConverterを改造するために提供していますが、デバッグの理由からAPIからの応答を見る必要があります。どのように私はこれを行うことができます、私は何を追加する必要があります。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... */); 

あなたはonNextすべて可能性のあるエラーを確認したい場合にも(Observable<Result<Product>>を使用することができます通常onErrorを使用するIOExceptionを含む)。

0

Daniel Lewのアプローチは迅速でボイラープレートコードの量は最小です。しかし、これはあなたのネットワークロジックをリファクタリングするかもしれません。デバッグの目的でこれを必要としていると言われているので、おそらくInterceptorsで構成されたOkHttpClientを使用する方が、あまり邪魔にならない戦略です。

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();