我正在尝试升级到Retrofit 2.0,并在我的android项目中添加RxJava。我正在进行api调用,并希望使用sqlite中的响应数据作为缓存来检索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) {
}
});
在Retrofit 1.9中,我们可以在成功回调中获取url:
@Override
public void success(MyResponseObject object, Response response) {
String url=response.getUrl();
//save object data and url to sqlite
}
如何使用RxJava使用Retrofit 2.0?
更新:
再次阅读问题后:
如果要访问原始响应,则需要将API接口定义为:
Observable<Response<MyResponseObject>> apiCall(@Body body);
代替:
Observable<MyResponseObject> apiCall(@Body body);
您可以使用以下网址获取网址:
response.raw().request().url()
这里:
response
是Retrofit
raw
的响应,
request
是OkHttp的响应,是OkHttp 的请求,其中包含Url
as HttpUrl
。
它在Retrofit1.9中很有用,但是在Retrofit2.0和rxjava中,我无法从Retrofit中检索响应
@LordRaydenMK,我们能否在获得响应之前打印请求的URL?我们可以将其打印,而无需使用Rxjava EG- stackoverflow.com/questions/36532273/retrofit-2-check-call-url