我有一个接受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中配置它?
答案 0 :(得分:1)
在路径字段中,像这样添加access_token:
使用原始帖子正文作为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已经回答了