1. 程式人生 > >Jmeter請求post,後臺一直獲取不到資料

Jmeter請求post,後臺一直獲取不到資料

一開始我用Jmeter做發post請求後臺,Jmeter我是這麼寫的:
後臺我用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的格式的,轉成字串再傳遞就不會改變任何東西。
使用ajax傳送post,其實預設contentType是application/x-www-form-urlencoded,data裡放的是json型別物件資料,但是其實jquery在傳送前就已經將這個json物件轉為 ptime=1111111的格式放在form data(request body)裡來發送了,所以後臺是可以正常獲取的。  $.ajax({     url: 'http://localhost:8080/rate/api-limit',     type: 'POST',     data: {ptime:111111},     success:function(data,status){         console.log(data);     }  }); 注意:這裡的data一定要是json物件,不能將其轉為json字串,否則傳過去會把整個字串當做一個key,然後value是空。
假如我們想用傳遞一個json格式到後臺,後臺用一個實體類來對映多個欄位,這個時候可以使用@RequestBody來繫結變數,變數是會對映所有引數,我們也可以使用一個map來裝載所有的引數。 之前有篇文章介紹使用patch請求,由於patch跟post一樣處理,而patch不支援application/x-www-form-urlencoded的格式,只支援application/json,所以只能通過將傳遞的引數轉為字串放在payload 後臺用@requestbody來繫結變數,才能獲取傳遞過來的值。 解決:所以jmeter那個問題就很簡單了,把訊息頭刪掉,把{ptime:11111}改成ptime=11111後臺就可以獲取了。

相關推薦

Jmeter請求post後臺一直獲取資料

一開始我用Jmeter做發post請求後臺,Jmeter我是這麼寫的: 後臺我用RequestServletUtils.getStringParameter的方式來獲取傳過來的值,但是一直獲取不到,我使用了http資訊頭:Content-Type=applcation/

正常啟動SparkStreaming之後但是一直獲取資料

出現這樣子的問題之後,我們將setMaster的值進行了一點點的修改 local[2] 為什麼? 之前在進行setMaster的值時,當我們為local的時候,其實表示為local[1] 那麼就是告訴我們的程式,只執行一個處理執行緒。但是在現在通過socket的

nginx反向代理走http+https通道後端走http通道導致前臺獲取後臺https內容的處理

前言: 目前我公司使用的伺服器架構為前臺為nginx反向代理,後端為單臺web伺服器或者叢集,目前的配置是這樣的,nginx反向代理配置了,http和https通道,但是後端伺服器配置為http通道。

前臺傳遞POST與GET請求後臺接收資料

今天9月30號,距離放假還有一天,划水過程中記錄一下曾經遇到的問題。 get請求:在常規理解上來,是跟在位址列後方的眾多變數,在後臺接收的時候,我們可以定義一個包裝物件,或者是直接用引數來接收,或者用Map來接收都可以,其中我們可能會用到@RequestParam註解來對接

AFNetwork資料post後臺接受到。

一直以為是form-data跟x-www-form-urlencoded的方式的原因,實際上原因是因為post方式,一種是將資料轉換為data放入請求體,一種是在請求頭,我們java後臺請求體的解析不到。解決方法,AFNetWork裡邊的post有兩種方法:分別對應上邊的兩種

後臺新增cookie前端jsp獲取

在開發中遇到問題:後臺 Cookie c=new Cookie(“Cookie”, “11111111111111111111”); c.setPath(“/”); response.addCookie(c); 在前端jsp獲取不到方法: Coo

登入頁面在輸入了正確的使用者名稱和密碼後仍跳轉到登入頁面而是期望的系統首頁面debug的時候發現登入頁面呼叫的action類方法被呼叫了兩次後臺無法獲取前臺頁面傳過來的引數。

問題描述: 專案首頁面進不去,debug的時候發現,index頁面呼叫的action類方法被呼叫了兩次,後臺無法獲取前臺頁面傳過來的引數,導致登入頁面在輸入了正確的使用者名稱和密碼後仍跳轉到登入頁面而不是期望的系統首頁面。 可能原因: 在Eclipse中的專案名與專案配置檔

Jmeter-無法啟動'findstr'是內部或外部命令是可運行的程序

運行 root 內部 system32 重新 變量 es2017 外部命令 oot 今天有一個同事的jmeter無法安裝,於是幫他看了看,報以下錯誤: JAVA的環境變量沒有配置好,於是重新配置了下環境變量後,再啟動,發現還是不好,於是網上查了下, 發現要在電腦的環境變量

SSL 認證之後request.getScheme()獲取到https的問題記錄

接受 col 輸入 response ack spa bsp 獲取 使用 通過瀏覽器輸入https://www.xxx.com,request.getScheme()獲取到的確實http而不是https 通過request.getRequestURL()拿到的也是http

Appium——連接真機adb devices獲取到設備號

pos 查看 gpo blog images log appium 精靈 獲取 連接真機後,使用 adb devices獲取不到設備號。 1、檢查usb接口是否正常,是否正常鏈接到電腦 2、手機開發者模式是否開啟,usb調試是否開啟 3、檢查驅動是否正常 4、如果

小程式點選跳轉外部連結計算問題後臺解密獲取更多使用者資訊

使用場景: 小程式上體點選圖跳轉廣告(百度這種連結) 直接上程式碼: index.wxml <!--pages/index/index.wxml--> <view wx:for="{{nav}}" wx:key="{{item}}"> <i

net.sf.json.JSONObject maven下載到了但是java後臺一直了問題

需求,實體轉JSON,然後用到JSONObject轉JSON,但是我向下面這樣引入,後臺就是用不了,還是報紅, <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-li

ubantu開機後可以輸入密碼但是一直去介面

我在配置顯示卡驅動的時候開關機了好多次就出現了這種情況 解決方法: 首先強制關機然後重啟 進入ubantu高階系統,進去之後裡面有兩個帶有recovery的選項,選擇版本低的那一個,點進去之後選擇第一個resume resume normal boot 選項,

httpclient post方式服務端獲取資料的解決辦法

最近做專案時,發現手機客戶端通過http協議post方式上傳資料到服務端,在伺服器端通過request.getInputStream()能獲取到相應的資料,但用request.getParameter()卻獲取不到資料。這是怎麼回事呢,後來發現這種情況跟form表單的屬性

JS 怎麼把陣列型別的引數傳遞到後臺後臺怎麼獲取

說明:開發環境 vs2012 asp.net mvc4 c# 1、HTML前端程式碼 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ArrayTest.aspx.cs" Inherits="MvcAppTest.ArrayT

css設定height:100%用js獲取到高度值問題

工作中用到的amaze ui的popup中的heigh:100%;在專案中我需要獲取大屏popup的高的具體的畫素值,然而我要說的是,總共有兩點:一、用純js獲取obj.style.height、obg.innerHeight和obj.offsetHeight獲取,    c

ModelAndView傳引數到前端jsp頁面頁面卻獲取到值

後端:        @RequestMapping("index.do")public ModelAndView findIndex(){List<EasybuyProduct> list = productBiz.findBy_8Line();ModelAnd

網路請求失敗點選按鈕響應事件

今天遇到兩個問題,請求時,怎麼也連不上伺服器,查了好久,結果是手機的wifi沒有開,自己坑了自己半天。還有一個問題是按鈕點選怎麼都沒反應,最後發現是按鈕的superView的範圍太小,按鈕在其外面,點選就沒效果了。還有

springmvc 後臺偶爾獲取到引數

前臺重新整理多次後,後臺springmvc獲取不到前臺傳的引數,不管是post,get,加隨機數都不行。 而且是偶發,不是每次。 記起來自己前面改了下配置。如下。   我為了能直接 在控制器返回文字,我再list中加了 下面的兩行 <value>applicat

ajax呼叫時document.getElementById獲取到值

今天寫ajax的一個小例子的時候,document.getElementById居然獲取不到值,後來找到了,對自己很是無語。 先看jsp頁面 <body> <script type="text/javascript">