1

我有一个接受 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 中配置它?

4

2 回答 2

1

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

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

并将原始帖子正文用于 JSON 内容。

于 2013-07-24T05:58:30.847 回答
0

我刚刚找到了解决方案。

我没有使用 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 已经回答了

于 2013-07-25T14:57:09.537 回答