jmeter發送的post請求,可以是json請求,和普通的post請求稍微有點區別,那么怎么用jmeter發送json請求呢?
首先要找一個json請求的例子,這個例子是攜程網搜索機票,
網址為:http://www.ctrip.com/
就會看到一個請求
POST http://flights.ctrip.com/itinerary/api/12808/products HTTP/1.1
Host: flights.ctrip.com
Connection: keep-alive
Content-Length: 394
Origin: http://flights.ctrip.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
Content-Type: application/json
Accept: */*
Referer: http://flights.ctrip.com/itinerary/roundtrip/SZX-PVG?date=2018-08-16,2018-09-03&portingToken=f4b3cccf952d430f849b09cf2f1b7142
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: _abtest_userid=5de22bed-c5a7-4899-9a39-d9585171b4dd; _RSG=2t4LegTggt55DEOg1rU9yA; _RDG=2832aa1c0f5c9127e73f759be773872d62; _RGUID=5deaa9da-a854-4dc2-af09-7b506a60e345; _ga=GA1.2.928472268.1516689249; Session=SmartLinkCode=U799897&SmartLinkKeyWord=&SmartLinkQuary=&SmartLinkHost=&SmartLinkLanguage=zh; DomesticUserHostCity=SZX|%c9%ee%db%da; adscityen=Shenzhen; _RF1=119.139.197.11; _gid=GA1.2.1823419760.1533784673; Union=OUID=&AllianceID=4897&SID=799897&SourceID=&Expires=1534389473325; MKT_Pagesource=PC; appFloatCnt=1; manualclose=1; _bfa=1.1516689246225.w2exd.1.1533784670751.1533792777877.13.59; _bfs=1.4; Mkt_UnionRecord=%5B%7B%22aid%22%3A%224897%22%2C%22timestamp%22%3A1533794105486%7D%5D; _jzqco=%7C%7C%7C%7C1533794085844%7C1.75043952.1516689249334.1533794085722.1533794105525.1533794085722.1533794105525.undefined.0.0.27.27; __zpspc=9.15.1533794085.1533794105.2%231%7Cbaiduppc%7Cbaidu%7Curldx%7C%25E8%25AE%25A2%25E7%25A5%25A8%25E7%25BD%2591%25E7%25AB%2599%7C%23; _bfi=p1%3D100101991%26p2%3D100101991%26v1%3D59%26v2%3D58; FD_SearchHistorty={"type":"D","data":"D%24%u6DF1%u5733%28SZX%29%24SZX%242018-08-16%24%u4E0A%u6D77%28%u6D66%u4E1C%u56FD%u9645%u673A%u573A%29%28PVG%29%24SHA%2CPVG%242018-09-03%24%24"}
{"flightWay":"Roundtrip","classType":"ALL","hasChild":false,"hasBaby":false,"searchIndex":1,"portingToken":"f4b3cccf952d430f849b09cf2f1b7142","airportParams":[{"dcity":"SZX","acity":"PVG","dcityname":"深圳","acityname":"浦東國際機場","date":"2018-08-16","dcityid":30},{"dcity":"PVG","acity":"SZX","dcityname":"浦東國際機場","acityname":"深圳","date":"2018-09-03","acityid":30}]}
可以看出請求數據是一個json字符串,這個就是一個json請求。
然后在打開jmeter,新建一個http請求
在http請求中填寫內容如下圖,把json串復制到BodyData 中去
添加結果樹,執行請求,Response Data沒有數據,說明請求不成功
請求不正常,是因為請求的header 不正確,添加header
復制請求數據中的header信息到粘貼板,點擊【add from clipboard】按鈕,就自動把header的鍵值對復制到這里,很方便。這個是jmeter 4.0,記得jmeter 3.x版本復制過去,每一行開頭還多了一個空格,現在4.0 沒有這個問題,算是方便不少了。
再執行請求,請求響應信息正常
這個時候,如果刪除 header信息中的 Content-Type: application/json
請求又不正常,說明json請求一定要再header 中配置這一項才行
微信關注公眾號:為測,獲取更多自動化方面技術文章