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