如何将来自一个HttpRequest的Json Request主体作为下一个HTTP请求中的值传递?

时间:2019-05-01 05:52:17

标签: rest jmeter jmeter-4.0 jmeter-3.2 jmeter-5.0

我正在尝试捕获从HTTP请求创建的有效负载(以JSON格式)并将其作为值传递给下一个API请求。

第一步:创建Http请求有效负载。下面的示例:

{  
   "fdCustomerId":"${cuid}",
   "account":{  
      "type":"CREDIT",
      "credit":{  
         "cardNumber":"ENC_[${Output2}]",
         "nameOnCard":"John Smith",
         "cardType":"${cardtype}",
         "cardSubType": "${cardsubtype}",
         "billingAddress":{  
            "type":"work",
            "country":"US",
            "primary":true
         }
}

Step2:使用后期处理将最终的有效负载捕获到变量中

var requestBody = ctx.getCurrentSampler().getArguments().getArgument(0).getValue();
vars.put("requestBody", requestBody);
log.info("###########################################Request     Body are:##########" + requestBody);

第3步:将RequestBody变量作为值传递给下一个HTTP请求

{ 
 "category": "GBS_ExecMetrics_UCom", 
 "consumed": false, 
 "data": { "Test Case Id": "AB_CMS_006_CC_001_500_", 
         "Account Number": "0001210520779700304", 
         "Primary Card Number": "**${requestBody}**",  
         "Secondary Card Number": "0000377883144114646",  
         "Run Date Time": "03/26/201917:30"}

}

当我将其命中到端点时,我得到以下错误消息:

  

{“错误”:“ BadRequest:请提供有效的Json” ...

如何将其转换为字符串或在函数中包含转义符并传递请求正文?

1 个答案:

答案 0 :(得分:0)

我对第1步中采用的示例请求语法很不好,以上步骤均按原样进行。

更正了以下语法,并能够传递json。谢谢。

{  
"fdCustomerId":"${cuid}",

“帐户”:{
      “ type”:“ CREDIT”,       “信用”:{
         “ cardNumber”:“ ENC _ [$ {Output2}]”,          “ nameOnCard”:“ John Smith”,          “ cardType”:“ $ {cardtype}”,          “ cardSubType”:“ $ {cardsubtype}”,          “ billingAddress”:{
            “ type”:“工作”,             “ country”:“ US”,             “主要”:true          }      }      }      }