关于Retrofit 2.0使用中遇到的问题

一、说明

本文主要是记录了在使用retrofit 2.0+的版本中遇到的问题,以免后面忘记了,也给遇到同样问题的兄弟提个醒,避免入坑,后续有问题会持续更新

二、问题描述

因为对retrofit结合rxjava做了封装,然后也没有打印返回error信息,导致一个很诡异的问题就是请求一个接口一直没有任何反应,日志也没显示异常,找了一下午没找到原因,而且发现同一个接口不同地方调用,请求参数不同,有的成功,有的没反应,后来对响应的封装做了移除,直接new了一个consummer来接受响应参数,结果应用直接崩溃了,信息如下:
............

Field map contained null value for key 'projectId'.....

...............

终于有反应了,这是好事情,赶紧把参数中为null的改为“”,再试一次,结果就正常了,真是坑啊,查了官方更新日志才知道,2.0以后Field 和FieldMap的入参都不允许为null

A {@code null} value for the map, as a key, or as a value is not allowed.

官方说明链接:https://github.com/square/retrofit/commit/10ff3d97faadcd6f716447d3376f9f51992e44dd

这个是着实有点坑的,不对string类型的变量进行赋值,在不同的调用场景下,某些变量在请求时就很可能变成null了,当封装了retrofit,而且在请求时又恰巧没有打印返回的error信息,出现的现象就是请求一个接口和没请求一样,点了不会有任何反应,使用okhttp自带的日志拦截器也不会打印任何信息,这个一定要注意,不处理null值要么没反应要么就是crash

2.关于请求URL处理上的问题

这个问题应该很多人都遇到了,网上也有很多人给了解决方案

@Path("url")String url  用这种方式注解url来替换请求方式中的相对路径时,部分字符在请求时会被进行编码 
@Url String url  直接使用这个就没有这个问题了
还有一点就是在请求时baseUrl中“/”和相对路径中“/”的处理问题,建议使用大家都推荐的baseUrl中以“/”结尾,相对路径开头不加就没问题了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值