Jmeter請求post,後臺一直獲取不到資料
後臺我用RequestServletUtils.getStringParameter的方式來獲取傳過來的值,但是一直獲取不到,我使用了http資訊頭:Content-Type=applcation/json也沒用。 --------------------------------------------------------------------------------------------------------------------------------------------------------- 原因: 先看一個說明: 在servlet規範3.1.1節裡,對POST資料何時會被當做parameters有描述:
1. The request is an HTTP or HTTPS request.
2. The HTTP method is POST.
3. The content type is application/x-www-form-urlencoded.
4. The servlet has made an initial call of any of the getParameter family of methods on the request object.
If the conditions are met, post form data will no longer be available for reading directly from the request object’s input stream.
所以對於http post請求,tomcat伺服器只接受application/x-www-form-urlencoded形式的請求來讀取request body中內容,並放於parameter中,而且body中的內容是key=value&key=value的形式。 假如我們要傳遞一個json內容,是沒辦法做到後臺通過key來獲取json中對應的value的。 使用ajax方式,需要使用application/json的請求頭,將物件引數轉為json格式的字串放於payload中,後臺就可以直接讀取request的流,從而獲得整個json字串 然後通過json的工具轉換獲取裡面的keyvalue。。。 注意,這裡必須要要將物件引數變為json格式的字串再傳遞(JSON.stringify({ptime:11111})),不然後臺request.getReader().readLine()讀出來是ptime=11111,根本沒法轉。所以沒有任何意義。因為jquery看到data如果是json物件,是會將json變成 引數=value&引數=value的格式的,轉成字串再傳遞就不會改變任何東西。