2016-08-18 118 views
11

我想升级到Retrofit 2.0并在我的android项目中添加RxJava。我在源码制作API调用,并希望获取URL,并将其与响应数据作为缓存如何使用rxjava在改进2.0中获取请求url?

Observable<MyResponseObject> apiCall(@Body body); 

而在RxJava电话:

myRetrofitObject.apiCall(body).subscribe(new Subscriber<MyResponseObject>() { 
    @Override 
    public void onCompleted() { 

    } 

    @Override 
    public void onError(Throwable e) { 

    } 

    @Override 
    public void onNext(MyResponseObject myResponseObject) { 

    } 
}); 

在改造1.9,我们可以获取成功回调中的网址:

 @Override 
     public void success(MyResponseObject object, Response response) { 
      String url=response.getUrl(); 
      //save object data and url to sqlite 
     } 

如何使用RxJava进行Retrofit 2.0操作?

+0

在此有何成就?我也在寻找这个 – neteinstein

回答

18

更新:

再次读取的问题后:

如果你想获得你需要定义你的API接口的原始响应为:

Observable<Response<MyResponseObject>> apiCall(@Body body); 

代替:

Observable<MyResponseObject> apiCall(@Body body); 

您可以使用以下网址:

response.raw().request().url() 

这里:
response是从改造
raw响应从OkHttp
request响应从OkHttp含有UrlHttpUrl请求。

+4

它在翻新1.9中很有用,但在retrofit2.0和rxjava中,我无法从翻新中检索响应 –