【Retrofit】@QueryMap导致HTTP 414错误

首先借用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=""

创建的请求接口为:

【Retrofit】@QueryMap导致HTTP 414错误_第1张图片

请求接口

刚开始没发现什么问题,但是后来在极限测试的情况下(用户的自我介绍是一个非常长的字符串),会出现HTTP414 的问题,是bug就要改的啊,所以就抓包看来一下,发现如果是@QueryMap封装的参数,这个Map中的值最终都会拼接在URL后面,发现网络请求的URI的长度有长度的限制,这个与浏览器的有关系,不同的浏览器限制的长度会不一致 。最后发现了Retrofit2.0中还有一个@FieldMap,这个参数就是给我们的表单提交所使用的,我们是使用的是POST请求,使用FieldMap会将请求的参数封装在Request的Body中,理论上POST请求是没有长度限制的。

你可能感兴趣的:(【Retrofit】@QueryMap导致HTTP 414错误)