本文主要探讨容易被忽略的几个点:

1.数据解析类被混淆。

将和Gson解析相关的实体类保持忽略混淆即可:

-keep class com.xxx.yyy.model.** {*;}

2.服务端返回json数据对应的状态码不为2xx系列。

这种情况和公司自身的业务逻辑相关,比如某公司按照业务设计,接口必须要传递access_token字段,当前端人员忽略时,后端返回 406 Not Acceptable 错误。此时,retrofit回调中response.isSuccessful的值为false,response.code()的值为406,response.body()将会是null。后端返回的错误提示信息会被封装到response.errorBody()中,调用response.errorBody().string()函数即可得到json字符串,再使用Gson进行解析即可。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐