2016-04-11 19 views
0

Kullanmakta olduğum yöntemi görebildiğim için yanıt vermediğim yöntemi görebildiğim için API'dan yanıt almak için Rxjava ile retrofit kullanıyorum. Ben GsonConverter için retrofit sağladım ama bazı hata ayıklama sebebi için API gelen yanıt görmek gerekir. Bunu nasıl yapabilirim, eklemem gereken kodu.Cevap Yanıt rxjava ile retrofit kullanırken geri çağırın

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

cevap

2

Yalnızca Recommended 2'nin olarak yapabilirsiniz: içerecek şekilde dönüş türünü değiştirin Response:

@GET(Url.URL_PRODUCT_API) 
Observable<Response<Product>> getProducts(/* ...etc... */); 
Eğer onNext yılında tüm olası hataları görmek istiyorsanız

da (Observable<Result<Product>> kullanabilirsiniz normal olarak onError'u kullanan IOException dahil olmak üzere).

0

Daniel Lew'un yaklaşımı hızlıdır ve en az miktarda kazan plaka kodunu içerir. Ancak, bu sizin ağ mantığınızı yeniden yönlendirmenizi zorlayabilir. Hata ayıklama amacıyla buna ihtiyaç duyduğunuzu belirttiğiniz için, Interceptors ile yapılandırılmış bir OkHttpClient kullanmak daha az zorlayıcı bir stratejidir.

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(); 
İlgili konular