2016-08-18 56 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中,我無法從翻新中檢索響應 –