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

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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐