本篇内容介绍了“Android怎么使用Retrofit实现自定义Converter解析接口”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!不知道你们在使用Retrofit访问后台接口时返回的数据是否是一样的格式,比如登录接口,在我们输入密码成功或错误的时候后台返回的数据格式是不同的,这样我们在添加GsonConverterFactory
解析后台数据时由于后台会返回两种不同的数据所以会导致Gson
解析失败的错误信息。这里以自己项目的登录接口为例子记录下自己的解决方案。登录成功和失败的两种数据格式:从上面数据中我们可以发现后台返回的数据只有data中的数据是不一样,其他几个字段都是一样的。这个时候我们可以将几个相同字段抽取出来,通过修改GsonConverterFactory
来实现解析不同数据。修改GsonConverterFactory:我们只需要点击进入GsonConverterFactory
的源码中看看它的代码,这里面我们只需要修改返回的GsonResponseBodyConverter
对象。所以我们再点击进入GsonResponseBodyConverter
中查看它的代码结构:我免费云主机域名们是无法直接在GsonResponseBodyConverter
里面直接进行修改的,所以我们可以自定义一个MyGsonResponseBodyConverter
类:这里面我们通过自己抽取出来的BaseBean
去判断当前接口返回的字段success
,如果为true
的情况下我们正常返回数据即可,为false
的情况我们通过自定义DataResultException
异常类将其抛出。通过DataResultException
获取success
为false
的情况下返回的数据:这个时候我们对GsonConverterFactory
的修改就基本完成了,但是我们要使用它的时候还需要在自定义MyGsonConverterFactory
和MyGsonRequestBodyConverter
两个类。这里主要是为了将之前自定义的MyGsonResponseBodyConverter
添加进去,而MyGsonRequestBodyConverter
这个类和GsonRequestBodyConverter
源码内容是一样的,我们直接将内容copy过来即可。我们只需要将MyGsonConverterFactory
替换之前的GsonConverterFactory
即可:addConverterFactory(MyGsonConverterFactory.create())
这个时候我们再去调用之前的登录接口,当我们登录失败的时候会进入onError
方法中,这个时候我们就可以判断是否抛出的是我们自定义的异常,如果是的话,那我们就可以获得当前的msg
和code
值从而去进行一些操作:这里我们可以对Subscriber
进行一下封装,要不我们每次请求都需要去进行判断显得很是繁琐:封装后我们只会调用onNext
的方法,当然我们如果需要其他操作的话也可以将其他几个方法重写:“Android怎么使用Retrofit实现自定义Converter解析接口”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!
相关推荐: Java多线程工具CompletableFuture怎么使用
本文小编为大家详细介绍“Java多线程工具CompletableFuture怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java多线程工具CompletableFuture怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。