android– 如何使用RxJava处理Retrofit 2中的网络错误

android– 如何使用RxJava处理Retrofit 2中的网络错误,第1张

概述我正在使用Retrofit2和RxJava.所以我的电话看起来像subscriptions.add(authenticateUser(mReq,refreshRequest).observeOn(Schedulers.io()).subscribeOn(Schedulers.io()).subscribe(authResponseModel->{

我正在使用Retrofit2和RxJava.所以我的电话看起来像

subscriptions.add(authenticateUser(mReq, refreshRequest)                .observeOn(Schedulers.io())                .subscribeOn(Schedulers.io())                .subscribe(authResponseModel -> {                    processResponse(authResponseModel, username, encryptedPass);                }, throwable ->                {                    LOGW(TAG, throwable.getMessage());                }));

这是一个身份验证API.因此,当API调用失败时,我从服务器得到响应

{"messages":["InvalID username or password "]}

以及400 Bad Request

我按预期在throwable对象中得到400 Bad Request.但我想收到服务器抛出的消息.我无法弄清楚如何去做.
有人可以帮忙吗?

解决方法:

if(throwable instanceof httpException) {    //we have a http exception (http status code is not 200-300)    Converter<ResponseBody, Error> errorConverter =        retrofit.responseBodyConverter(Error.class, new Annotation[0]);    //maybe check if ((httpException) throwable).code() == 400 ??    Error error = errorConverter.convert(((httpException) throwable).response().errorBody());}

假设您正在使用Gson:

public class Error {    public List<String> messages;}

消息的内容应该是错误消息的列表.在你的例子中
messages.get(0)将是:无效的用户名或密码

总结

以上是内存溢出为你收集整理的android – 如何使用RxJava处理Retrofit 2中的网络错误全部内容,希望文章能够帮你解决android – 如何使用RxJava处理Retrofit 2中的网络错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1097088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存