我正在尝试升级到 Retrofit 2.0 并在我的 android 项目中添加 RxJava 。我正在进行 api 调用,并希望检索 url 及其以及 sqlite 中的响应数据作为缓存
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 中做到这一点?
Update:
再次阅读问题后:
如果您想访问原始响应,您需要将 API 接口定义为:
Observable<Response<MyResponseObject>> apiCall(@Body body);
代替:
Observable<MyResponseObject> apiCall(@Body body);
您可以使用以下方式获取 URL:
response.raw().request().url()
here:
response
是来自 Retrofit 的回应
raw
是 OkHttp 的响应
request
是来自 OkHttp 的请求,其中包含Url
as HttpUrl
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)