【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=""

創建的請求接口為:

請求接口

剛開始沒發現什么問題,但是后來在極限測試的情況下(用戶的自我介紹是一個非常長的字符串),會出現HTTP414 的問題,是bug就要改的啊,所以就抓包看來一下,發現如果是@QueryMap封裝的參數,這個Map中的值最終都會拼接在URL后面,發現網絡請求的URI的長度有長度的限制,這個與瀏覽器的有關系,不同的瀏覽器限制的長度會不一致 。最后發現了Retrofit2.0中還有一個@FieldMap,這個參數就是給我們的表單提交所使用的,我們是使用的是POST請求,使用FieldMap會將請求的參數封裝在Request的Body中,理論上POST請求是沒有長度限制的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,769評論 18 399
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 32,803評論 24 1,002
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,441評論 6 152
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,523評論 25 708