【发布时间】:2018-10-08 13:34:39
【问题描述】:
这是我的请求的样子:
ApiService apiService = retrofit.create(ApiService.class);
Observable<Response<UserUpdateResponse>> response = apiService.updateUser(Utils.getHeader(), object);
response.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onSuccessUpdate,
this::onErr,
this::hideDialogLoading);
它应该返回'code':'205' 'msg':'successfully update'。但是,当服务器响应任何代码 201,202(任何不是 200)时,它都会出错。
这是错误。
java.net.ProtocolException: HTTP 205 的 Content-Length: 121 非零
那么我如何防止它出错,或者我如何获得错误正文?谢谢!。
【问题讨论】:
-
你确定没有其他错误吗?试试
retrofitError.getCause()。检查这是否有帮助stackoverflow.com/questions/23107579/… -
嗨@Yousefkhan,我正在使用Retrofit2,我需要创建RetrofitError 类吗?
-
看看github.com/square/retrofit/issues/1218。引用 jake 的评论“构造你的 observable 有三种方法:Observable
、Observable > 或 Observable >。对于第一个版本,没有地方可以挂非 200 响应信息,所以它包含在传递给onError的异常中。对于后两者,数据被封装在Response对象中,可以通过调用errorBody()来访问。" -
我收到了这个错误 io.reactivex.exceptions.CompositeException: 2 个异常发生。在 io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:80) 在 io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276) 在 io.reactivex.internal.operators .observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172) 在 ...
-
将上述内容添加到您的问题本身
标签: android retrofit rx-java2 okhttp3