JSON在JMeter中发布数据请求

时间:2013-07-23 12:27:11

标签: rest jmeter load-testing

我有一个接受JSON帖子数据的休息网络服务,但是为了请求任何API网址,我们需要传递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中配置它?

2 个答案:

答案 0 :(得分:1)

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

  • path?access_token = $ {由regexp提取的值}

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

答案 1 :(得分: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已经回答了