【问题标题】:JSON Post data request in JMeterJMeter 中的 JSON Post 数据请求
【发布时间】:2013-07-23 12:27:11
【问题描述】:

我有一个接受 JSON 发布数据的休息网络服务,但要请求任何 API url,我们需要传递 access_token
所以我的帖子数据是 JSON 数据,access_token 作为查询字符串传递。

  • 问题:

    根据我的探索,我没有找到任何发送请求的方法,该请求可以包含 JSON 发布数据并且还接受来自 JMeter 中的 HTTP-URL-REWRITING 的查询字符串。

  • 实际要求:

    POST http://<domain>/webapp/service/document/save    
    POST data: { node = '1'}token_XXXXXX
    [no cookies]    
    Request Headers: Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 980 Host: localhost User-Agent: Apache-HttpClient/4.2.3 (java 1.5)
    

以下是预期的请求数据。

  • 预期要求:

    POST http://<domain>/webapp/service/document/save?access_token=token_XXXXXX    
    POST data: { node = '1'}   
    [no cookies]  
    Request Headers: Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 980 Host: localhost User-Agent: Apache-HttpClient/4.2.3 (java 1.5)
    

在JMeter中应该如何配置?

【问题讨论】:

    标签: rest jmeter load-testing


    【解决方案1】:

    在路径字段中,像这样添加access_token:

    • path?access_token=${由正则表达式提取的值}

    并为 JSON 内容使用原始帖子正文。

    【讨论】:

      【解决方案2】:

      我刚刚找到了解决方案。

      我没有使用 Header Manager ,而是使用了 BeanShell 预处理器,我刚刚从 Beanshell 预处理器中可用的参数中删除了参数,并使用 BeanShell 预处理器中可用的 setPath() 方法将 QueryString 添加到请求的路径中。

      Arguments arguments = sampler.getArguments();
      String access_token = sampler.getArguments().getArgumentsAsMap().get("access_token");
      arguments.removeArgument("access_token");
      String path = sampler.getUrl() + "?access_token=" + access_token;
      sampler.setPath(path);
      

      这段代码解决了我的问题。 替代方案是 HeaderManager。 @PMD UBIK-INGENIERIE 已经回答了

      【讨论】:

      • 是的.. 但如果我刚刚使用 HeaderManger 修改了后数据内容,那么......我仍然需要将我的 access_token 附加到 url.. 那是我更喜欢删除参数并将查询字符串附加到 url
      • 我好像误解了你的问题,我更新了我的andwer
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2013-12-23
      相关资源
      最近更新 更多