1. 程式人生 > >【soapUI】解決post請求時,body為json串,伺服器無法解析問題

【soapUI】解決post請求時,body為json串,伺服器無法解析問題

       背景:傳送post請求,且body為json串時,response響應值總是提示“XX欄位值不能為空”,採用Postman、jmeter工具嘗試,結果都是如此,但Postman、jmeter採用提交的內容型別為application/x-www-form-urlencod,伺服器卻可以解析,也能成功返回正確資料,只能猜想是header問題所致,於是請求開發幫助,在程式碼裡面,加入列印request和response日誌,再通過soapui重新發送json串,發現請求引數中,json串鍵和鍵值都為空,而且偶爾還出現,將整個json串當做一個鍵值,故分析是伺服器不支援解析json串提交的內容型別問題所致。

       原因:通過抓包和分析請求中header資訊,以及與開發瞭解程式碼解析程式碼原理,發現http協議預設提交的內容型別為application/x-www-form-urlencod,故傳送json串,伺服器是無法解析。

       解決方法:讓開發修改程式碼,相容json提交的內容型別“application/json”後,返回soapui工具,選擇request請求,將body中Media Type,選擇或輸入“application/json”型別,再輸入符合json格式的json串 ,再執行請求,就可以成功看到伺服器response回來的值。

      2、瞭解原理後,順便解決了soapui傳送post請求,提交的內容型別為application/x-www-form-urlencod時,body內容應採用如何方式提交問題,方法:在soapui  request請求的body中,將Media Type中選擇或輸入“application/x-www-form-urlencod”,再輸入引數和值(比如:loginname=test&password=123456) ,再執行即可。
      3、其他工具要支援json格式傳送請求,與方法1雷同。
      4、若其他工具中body,採用其他提交的內容型別(比如:text/xml、multipart/form-data等)傳送請求,一定要記住伺服器是否支援提交的內容型別,以及body內容對應編寫方式,否則無法解析。