gpt4 book ai didi

改造 Observables 和访问响应

转载 作者:行者123 更新时间:2023-12-05 00:23:08 28 4
gpt4 key购买 nike

我正在使用 Retrofit 和 RxJava,但似乎无法做我想做的事。

这是我对 Web 服务的声明:

Observable<Response> rawRemoteDownload(@Header("Cookie") String token, @Path("programId") int programId);

我遇到的问题是 webservice 返回一个 403 和一个包含详细信息的 json 有效负载。

Retrofit 调用 onError,只传递 Throwable,所以我无法检查响应正文。

这是我的测试代码的一部分
apiManager.rawRemoteDownloadRequest("token", 1).subscribe(new Observer<Response>() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {
// this is called and I've lost the response!
}

@Override
public void onNext(Response response) {

}
});

解决方案:

感谢 Gomino,我将其作为解决方案:
new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
if (throwable instanceof RetrofitError) {
Response response = ((RetrofitError) throwable).getResponse();

System.out.println(convertToString(response.getBody()));
}
}

其中 convertToString 看起来像:
private String convertToString(TypedInput body) {
byte[] bodyBytes = ((TypedByteArray) body).getBytes();
return new String(bodyBytes);
}

最佳答案

检查 throwable 是否为 RetrofitError:

@Override
public void onError(Throwable e) {
if (e instanceof RetrofitError) {
Response response = ((RetrofitError) e).getResponse();
}
}

关于改造 Observables 和访问响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28718951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com