【问题标题】:JSON Path Extractor in JMeterJMeter 中的 JSON 路径提取器
【发布时间】:2015-10-27 23:53:28
【问题描述】:

我是 jmeter 的新手。谁能帮我使用一个请求的响应对象作为下一个 HTTP 请求的请求标头传递?

让我解释一下。

  1. 我在我的应用程序中获得了一个访问令牌以及登录响应:

    {: "responseCode":18, : "message":"登录成功。", : "responseObject":"8zWExE4eSdhcJDwnW9MgIw=="}

  2. 不,我想使用此访问令牌 (8zWExE4eSdhcJDwnW9MgIw) 作为下一个请求的参数之一。

我为此使用了 JSON 路径提取器。但它不起作用。

【问题讨论】:

  • 但是我已经尝试过使用 $.responseObject 和 $.responseObject[0] 并且它不起作用。让我解释一下我在这种情况下的尝试。
  • 这些是我在测试脚本中实现的组件。 1 HTTP 请求默认值 2 HTTP Cookie 管理器 3. 用户定义变量(在此变量中声明为“access_Token”,其值为“jsonVal”,即 JSON 路径提取器名称) 4. HTTP 请求(登录)(此请求给出的响应为 { : "responseCode":18, : "message":"Successfully logged in.", : "responseObject":"NXVQR/bQBGJV4ugJOgpQeg==" } ) 4.1 HTTP Header Manager 4.2 JSON Path Extractor (Extractor name是jsonVal,我已经传入了用户定义的变量)
  • 5 HTTP Request (Reservation) 它的请求体是像 { "eventId":4446, "buyerId":10, "invCount":1, "eventPriceId":169 } 5.1 HTTP Header Manager Accept application /json Content-Type application/json accessToken ${access_Token} 6 预约请求的结果树响应是 { : "responseCode":100, : "message":"Invalid Access Token." }

标签: jmeter


【解决方案1】:

我也在使用 JSON 路径提取器,如果配置正确,它会很好用。 只需将其放入请求并填写字段:

  • 变量名称:access_token(或任何其他您想稍后在请求中使用的名称,例如 ${access_token})
  • JSON 路径:如果您粘贴的 JSON 是完整响应,则 responseObject 应该就足够了(如果在复制粘贴或 JSON 损坏时,额外的冒号只是一些错误?)
  • 默认值:我总是使用一些值,例如“未更新!”在这里,我可以在下一步中断言,或者至少在请求中很容易看到它。

【讨论】:

  • 嗨,我希望你能看到给我 accessToken 的回复。而且我认为我已经正确配置了它。如果我错了,请纠正我。
  • 我认为问题可能是您使用该 responseObject 进行响应,因为有些冒号不应该存在,除非它只是一些奇怪的格式。我说的是 responseObject 名称之前的冒号,比如这里':“responseObject”',这可能是错误地解析了 JSON。我还看到一件事,如果您分配的值是“jsonVal”,而不是 ${jsonVal},那么问题可能就在这里。或者先赋值再提取。尝试在您的下一个请求中使用 ${jsonVal} 并查看它是否存在。
  • 我又读了一次你的 cmets,只是为了补充一点——你不必将 jsonVal 分配给 access_token,只需在提取器中使用 access_token 名称而不是 jsonVal,这样你就会拥有它直接分配,以免不必要地复杂化。
  • 当我将结果树中对 json 视图的响应视图从 Text 切换到 JSON 时,冒号即将到来。它不是实际响应的一部分。 JMeter 仅将那些冒号放置在该点上。实际的反应会是这样的。 {"responseCode":18,"message":"登录成功。","re​​sponseObject":"VhE/3ENBM9+METEQPLHI6Q=="}
  • 而使用 ${jsonVal} 或 jsonVal 的情况,我需要使用用户定义的变量来尝试吗?请求标头:连接:keep-alive 接受:application/json 内容类型:application/json accessToken:${jsonVal} 内容长度:71 主机:182.72.159.116:8080 用户代理:Apache-HttpClient/4.2.6( java 1.5)
【解决方案2】:

没有看到完整的响应,很难提出正确的 JSON 路径表达式。

鉴于您发布的内容,它应该类似于$.responseObject

有关查询语法示例,请参阅 JSON Path Syntax 指南,有关插件安装说明和 XPath 到 JSON 语法映射,请参阅 Using the XPath Extractor in JMeter(向下滚动到“解析 JSON”)。

【讨论】:

    【解决方案3】:

    以防万一有人遇到使用 JSON Extractor 提取多个变量的问题(比如我),请确保:

    • 使用分号作为分隔符列出变量/路径表达式/默认值的名称。
    • 为每个变量提供默认值。

    第二点显然是必须的,我是从this才知道的 中等帖子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多