說說application/x-www-form-urlencoded和application/json的區別


 

今天一位同事在於微信小程序開發人員那邊在對接測試的時候,遇到了一個錯誤,安卓那邊是以application/json作為請求體類型,而Java這邊仍向往常那樣沒有多么大的變化,但是就是前台傳輸的數據為null。一般請求為null,有這么幾個原因?

第一,請求參數與后台接收參數不一致;

第二、請求參數類型與后台接收參數類型不一致;

第三、請求體類型存在問題;

今天的原因最后找到了,將application/json改為application/x-www-form-urlencoded就可以了。

application/x-www-form-urlencoded方式是Jquery的Ajax請求默認方式,這種方式的好處就是瀏覽器都支持,在請求發送過程中會對數據進行序列化處理,以鍵值對形式,例如:

key1=value1&key2=value2的方式發送到服務器。如果用Jquery,它內部已經進行了處理,如果自己寫原生的Ajax請求,就需要自己對數據進行序列化。


application/json,隨着json規范的越來越流行,並且瀏覽器支持程度原來越好,許多開發人員將application/json作為請求content-type,告訴服務器請求的主體內容是json格式的字符串,服務器端會對json字符串進行解析,這種方式的好處就是前端人員不需要關心數據結構的復雜度,只要是標准的json格式就能提交成功,application/json數據格式越來越得到開發人員的青睞。

我們分析了下原因,最后認為覺得可能是微信小程序的原因。不過,這僅僅只是猜測。

我通過查了相關的資料,表明這個與請求方式和表單提交可能存在關系,比如application/x-www-form-urlencoded是屬於通用型的,而application/json只是現在瀏覽器支持的程度越來越好不排除是因為這個原因導致請求失敗沒有達到預計的效果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM