是否可以从Jmeter中的响应中提取UUID,以便我可以用于后续请求

问题描述

我的场景:

  1. 我正在执行POSt请求,该请求生成一个rateID(UUID)
  2. 执行另一个使用此rateID的POST请求
  3. 我还在体内使用JSON Extractor提取的其他2个字段,但不知何故,这个rateID照原样通过了

一个POST请求的示例响应正文

{
        "source": "USD","target": "MXN","RateId": "0f4a78a2d2b34849882f0154b9249345","exchangeRate": 21.3909440000,"rateExpiry": "2020-09-14 20:30:20","providerId": 2,"providerNm": "ZIGA-STATIC","rawRate": 21.3376000000,"markupValue": 0.00250
 }

来自第二个POST请求的示例请求正文

[{

  "source":"${source}","target":"${target}","RateId":"${RateId}","buyAmount":100,"transactionSettlementDate":"2020-07-28","transactionId":"${GUID}","transactionTimestamp":"2020-07-28T17:35:17.866Z"

}]

遇到错误

{"errorMessages":["Transaction #0: [invalid RateId ${RateId}]"]}

不可能那样使用UUID吗??我什至尝试使用正则表达式提取UUID ([a-f0-9] {8}-[a-f0-9] {4} -4 [a-f0-9] {3}-[89aAbB] [a-f0-9] {3}-[ a-f0-9] {12}),但还是没有运气

向社区的Jmeter专家寻求帮助,请帮助

解决方法

根据您显示的内容,似乎无法提取4个字段。

您需要向第一个HTTP请求添加3个JSON提取器:

第一个带有用于json路径表达式的源变量:

source

第二个目标变量:

target

最后一个是RateId

RateId

对于Guid,尚不清楚它是否仅是RateId的值(为什么要创建变量Guid而不是仅使用$ {RateId}以及在这种情况下如何填充它?)。

如果只是随机的uuid,则可以使用函数UUID:

$ {__ UUID()}

否则,请弄清它的来源。

请参阅:

,

您可以使用JSR223 PostProcessor和以下Groovy代码在一次拍摄中提取3个值:

def response = new groovy.json.JsonSlurper().parse(prev.getResponseData())

vars.put('source',response.source)
vars.put('target',response.target)
vars.put('RateId',response.RateId)

演示:

enter image description here

更多信息: