何福毅*_*何福毅 23 android rx-java retrofit2
我正在尝试升级到Retrofit 2.0并在我的android项目中添加RxJava.我正在进行api调用,并想要将sqlite中的响应数据作为缓存来检索url和它
Observable<MyResponseObject> apiCall(@Body body);
Run Code Online (Sandbox Code Playgroud)
并在RxJava调用中:
myRetrofitObject.apiCall(body).subscribe(new Subscriber<MyResponseObject>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(MyResponseObject myResponseObject) {
}
});
Run Code Online (Sandbox Code Playgroud)
在Retrofit 1.9中,我们可以获得成功回调中的url:
@Override
public void success(MyResponseObject object, Response response) {
String url=response.getUrl();
//save object data and url to sqlite
}
Run Code Online (Sandbox Code Playgroud)
如何使用RxJava进行Retrofit 2.0?
Lor*_*nMK 34
更新:
再次阅读问题后:
如果要访问原始响应,则需要将API接口定义为:
Observable<Response<MyResponseObject>> apiCall(@Body body);
Run Code Online (Sandbox Code Playgroud)
代替:
Observable<MyResponseObject> apiCall(@Body body);
Run Code Online (Sandbox Code Playgroud)
您可以使用以下网址获取网址:
response.raw().request().url()
Run Code Online (Sandbox Code Playgroud)
这里:
response来自Retrofit
raw的响应是来自OkHttp的响应是来自OkHttp
request的请求,其中包含Urlas HttpUrl.
| 归档时间: |
|
| 查看次数: |
13915 次 |
| 最近记录: |