记录一个小坑。
最近在工作中遇到一个小坑,消耗类我一天的时间最终才把问题解决。
事件背景:
1、Android 端需要请求网络接口。于是按照惯例我写好调用代码,获取返回状态值。
2、运行程序,发现执行结果总是失败。
3、抓包查看请求信息,发现请求成功了,服务器返回状态码为200。Response 无返回内容。
4、反复检查 Android 端代码,没有发现错误。
5、Debug 调式发现,程序总是会走到请求失败的分支,根本就得不到 Response 对象的数据。Throwable 对象的信息如下:
异常类型:MismatchedInputException
错误信息:No content to map due to end-of-input
看到异常信息,首先怀疑到 Android 端请求参数和调用的代码有问题?
于是使用同样的方式调用另外一个接口,也找公司大佬帮忙确认了调用代码,发现没问题。
问了 IOS 司机,他说可以请求成功。哎呦,那服务器接口和网络环境没问题了。
三端都没问题,但是 Android 端调用不成功,无解了。
。。。
知直到请教了好几位大佬后,都分析认为是服务器没有返回内容导致的。通过上面的异常信息得知,并不是 Android 端调用代码的输入错误,而是 okhttp 在解析服务哦返回的 json 时,抛出的异常。算是 Android 端的网络框架的锅巴。
我没权限修改网络框架啊,问题还是要解决的。大概直到了可能的原因,于是求助服务端老司机随便给点返回值。再运行 Android 端程序跑一把,好了!
那行吧,这个坑我收藏了。结束了一天的阴暗。