温馨提示:本文翻译自stackoverflow.com,查看原文请点击:android - How to get the request url in retrofit 2.0 with rxjava?
android rx-java retrofit2

android - 如何使用rxjava在Retrofit 2.0中获取请求URL?

发布于 2020-04-03 23:28:16

我正在尝试升级到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?

查看更多

提问者
何福毅
被浏览
125
LordRaydenMK 2016-08-21 16:05

更新:

再次阅读问题后:

如果要访问原始响应,则需要将API接口定义为:

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

代替:

Observable<MyResponseObject> apiCall(@Body body);

您可以使用以下网址获取网址:

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

这里:
response是Retrofit
raw的响应,
requestOkHttp的响应,OkHttp 的请求,其中包含Urlas HttpUrl