【问题标题】:Jmeter JSON Extractor to get a token value inside a response bodyJmeter JSON Extractor 在响应正文中获取令牌值
【发布时间】:2018-02-08 12:20:10
【问题描述】:

所有。这是我在 GET 请求后得到的响应:

{"id":30,
 "name":"ABC, Inc.",
 "clientRiskAssessment":{"clientId":30,
                         "generalScore":70,
                         "federalScore":45,
                         "internationalScore":20,
                         "updatedDate":"0001-01-01T00:00:00+00:00",
                      "url":"https://example.com/WebPortal/Config/Tax/index.html?IsFrame=true#/app/questionnaire-response/GeneralTaxClientQa/abd8d723-dc4a-e711-811b-00505683008b",
                         "formattedDate":"01/01/0001"}}

我可以通过在 JSON Extractor - JMeter 中的 JSON 路径表达式中使用 $..url 来获取“url”的全部值。谁能给我一个提示,告诉我如何仅在 url 末尾而不是整个 url 值处获取令牌?这是我想在网址末尾提取的令牌:abd8d723-dc4a-e711-811b-00505683008b 谢谢。

【问题讨论】:

  • 或许,您可以使用Beanshell PostProcessor。见this answer(第3点),你需要.replaceFirst(".*/", "")
  • 感谢@WiktorStribiżew replaceFirst 方法仅替换第一个字符。将其更改为 replaceAll 后,我能够获得令牌
  • 好吧,您不需要.replaceAll,因为只需要一个匹配项。无论如何,两者都会起作用。

标签: json regex jmeter


【解决方案1】:

您可以通过以下配置使用 RegexPostProcessor:

正则表达式:url.*\/(.*?)"

模板:$1$

比赛编号:1

这将始终从 url 的末尾捕获令牌。

【讨论】:

    【解决方案2】:

    这是我认为最稳定提取的方法:

    添加到您的 HTTP 请求:

    像这样:

    JSON Extractor 是这样的:

    而正则表达式提取器是:

    【讨论】:

      【解决方案3】:

      您可以使用以下正则表达式提取器配置来获取此GUID-like 结构:

      • 参考名称:任何有意义的名称,即token
      • 正则表达式:([a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-([a-f\d]){12})
      • 模板:$1$

      演示:

      参考资料:

      【讨论】:

        猜你喜欢
        • 2018-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-03
        • 1970-01-01
        相关资源
        最近更新 更多