一个bad request http request or invalid response的错误

问题

部分客户端api报错,特别是8.0系统上,访问api出现bad request http request or invalid response,from ulb错误。

解决步骤

1.服务器联调

服务器端未发现问题,参数都对。服务器上也没有这句错误信息。猜测应该是服务器上层报出来的错误,如负载均衡。

2.用Charles抓包

Charles抓包后,就不会出现该错误了。后来发现Charles对错误报文进行了兼容处理,发给服务器的应该对的。

3.去GIthub查网络库的issues

项目中使用的是,Android-async-http这个库,issues中没有人说8.0中有这个问题,猜想应该是自己代码中的问题。

4.大鲨鱼Wireshark抓包

大鲨鱼Wireshark抓包后会出现该错误,没有看出报文有异常。

比较正确的报文和错误的报文,发现大小不一样。

最终发现(找了好久,反正就是很艰难),错误的报文Header中多了一个空行。

原因

在往Header中添加参数时,有一个参数出现了\n,正常情况下客户端发送报文的时会忽略\n,而有的版本把\n放在了报文中,导致报文格式出错。