這是個坑啊~
準備用Jmeter做壓力測試,實現(xiàn)把單個接口的相關參數(shù)在Postman里面調試通過,然后搬運到Jmeter上面來,先跑一次看是否通過。
詭異的事情出現(xiàn)了:居然不行!
仔仔細細的比對了兩個工具里該請求的相關參數(shù):
- 是Post請求,地址沒寫錯;
-
請求body是form-data,參數(shù)也都一致;
postman的body配置

-
header所需的所有參數(shù)也都一樣,并且都按照開發(fā)文檔的要求填上了Content-Type: multipart/form-data
postman的header配置

可以說是一模一樣了!
由于Jmeter的header是單獨用HTTP Header Manager來管理的,因此還特意檢查了它的作用域(和HTTP request平級或者是其子級,可以被使用到),也是OK的。
無意中禁用了HTTP Header Manager,然后再請求,居然這次jmeter請求成功了!
由于這個請求的header里面參數(shù)較少,只有Content-Type,所以推測是和它有關系。
檢查了jmeter中,這次請求成功的request數(shù)據(jù),發(fā)現(xiàn)有這么一行:Content-Type: multipart/form-data; boundary=wVDFbKOrJUSR6pzaJkPhlIWnwLcdmKHHV9,也就是說,好像自動加上了Content-Type。仔細想想,在body里面是有勾選```Use multipart/form-data``的,所以應該和這項配置有關。
所以這么說,我在header里面再寫一遍反而是冗余的?于是嘗試把postman里這一項也給刪掉,同樣也能請求成功。
那么加上它,request數(shù)據(jù)會有什么不同嗎?檢查后發(fā)現(xiàn)有這么一行:Content-Type: multipart/form-data和上面的相比缺少了boundary。雖然不知道為什么這一點點區(qū)別就會導致jmeter請求失敗,總算是把問題給解決了。
個人猜測,可能不同工具對待冗余參數(shù)的處理方式不同,所以postman是可以兼容的,而jmeter不行。

