【Retrofit】@QueryMap导致HTTP 414错误

作者: itbird01 | 来源:发表于2017-03-03 15:46 被阅读200次

    首先借用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请求是没有长度限制的。

    相关文章

      网友评论

      • tatsuyuki:其實有些錯誤觀念
        這跟Retrofit一點關係都沒有
        Query String 本身就是放在網址上了
        而網址長度通常都是Server的限制。
        itbird01:恩,谢谢您的善意指正。不过在文章title前面加入Retrofit只是为了方便大家关键字查询,强调我在Retrofit使用过程中遇到了这个问题,并不是说与Retrofit有关系的。:smile: :smile: :smile:

      本文标题:【Retrofit】@QueryMap导致HTTP 414错误

      本文链接:https://www.haomeiwen.com/subject/sbhrgttx.html