首先借用HTTP 414的某百科解释 :
您的 Web 服务器认为,客户端(如您的浏览器或我们的 CheckUpDown 机器人)发送的 HTTP 数据流包含一个过长网址, 即字节太多。
相信了解了414解释的,就知道我错误在哪里吧,项目实例介绍如下:
name="uid" value='2'"
name="Platformtype" value="Android"
name="username" value=''"
name="birthday" value="1980-11-1"
name="province" value=""
name="location" value=""
name="signature" value=""
创建的请求接口为:
请求接口
刚开始没发现什么问题,但是后来在极限测试的情况下(用户的自我介绍是一个非常长的字符串),会出现HTTP414 的问题,是bug就要改的啊,所以就抓包看来一下,发现如果是@QueryMap封装的参数,这个Map中的值最终都会拼接在URL后面,发现网络请求的URI的长度有长度的限制,这个与浏览器的有关系,不同的浏览器限制的长度会不一致 。最后发现了Retrofit2.0中还有一个@FieldMap,这个参数就是给我们的表单提交所使用的,我们是使用的是POST请求,使用FieldMap会将请求的参数封装在Request的Body中,理论上POST请求是没有长度限制的。