首先借用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請求是沒有長度限制的。