Android 如何通过改造同时获得两个对象—原始响应对象和POJO?

Android 如何通过改造同时获得两个对象—原始响应对象和POJO?,android,retrofit,rx-java,Android,Retrofit,Rx Java,我在一个项目中使用改型/OkHttp,最近我发现了RxJava。将它与改造结合起来似乎简单明了,但在success(…)中的改造中使用常规异步回调,我们将收到解析的POJO和响应。这非常有用,在我的一些回调中,我使用了这两个对象。我似乎找不到用RxJava实现这一点的方法 有可能同时获得解析后的POJO和响应对象吗?RxJava的工作方式是,onNext方法总是只发出一个值,因此您将无法获得以下内容(因为这会破坏契约): 最接近的可能是一个可观察的,其中响应和DPOJO如下所示: public

我在一个项目中使用改型/OkHttp,最近我发现了RxJava。将它与改造结合起来似乎简单明了,但在
success(…)
中的改造中使用常规异步回调,我们将收到解析的POJO和响应。这非常有用,在我的一些回调中,我使用了这两个对象。我似乎找不到用RxJava实现这一点的方法


有可能同时获得解析后的POJO和响应对象吗?

RxJava的工作方式是,
onNext
方法总是只发出一个值,因此您将无法获得以下内容(因为这会破坏契约):

最接近的可能是一个
可观察的
,其中
响应和DPOJO
如下所示:

public class ResponseAndPojo<T> {

    private final T value;
    private final Response response;

    public ResponseAndPojo(T value, Response response) {
        this.value = value;
        this.response = response;
    }

    // add getters here
}

正如您所看到的,从外部看,
主题
看起来像一个可观察的,这正是我们想要的。

我想您知道
@GET(“/users/list”)可观察的userList()。。。所以相反,您需要一个可观察的对象,它在一个“
onNext()
中发出一对响应和POJO。我不知道这样的可能性…是的-就像在常规的改装异步回调中一样:
publicsvoidsuccess(objecto,Response-Response)
public class ResponseAndPojo<T> {

    private final T value;
    private final Response response;

    public ResponseAndPojo(T value, Response response) {
        this.value = value;
        this.response = response;
    }

    // add getters here
}
onNext(ResponseAndPojo<T> responseAndPojo)
public Observable<ResponseAndPojo<YourPojoClass>> getResponseAndPojoObservable() {
    final BehaviorSubject<ResponseAndPojo<YourPojoClass>> retrofitSubject = BehaviorSubject.<ResponesAndPojo<YourPojoClass>>create();

    yourRetrofitService.getSomething(new Callback<YourPojoClass>() {

        @Override
        public void success(YourPojoClass pojo, Response response) {
            retrofitSubject.onNext(new ResponseAndPojo(pojo, response);
            retrofitSubject.onCompleted();
        }
    });

    return retrofitSubject;
}