实现开放接口 我们通常需要根据参数 及开发提供的密钥 生成一个签名
在根据解签签证成功后 请求接口
接口名称:/api-open-center/open/gateway
请求方式:post
参数类型:form-data
根据正常的添加线程添加http请求设置好
添加默认线程组
在添加一个http请求,设置好url及参数及请求方式,请求类型
再添加http请求头 比如说Content-Type参数之类的头部参数
由于我们需要的签名需要根据参数生成,所以我们需要加一个BeanShell 预处理程序
右键-添加前置处理器-BeanShell PreProcessor
写你的代码
这里生成的RSA是用阿里的方法的 你可以自己下一个 也可让开发生成个jar包给你 都可
在测试计划中导入jar包,即可在后面引用了
以下为前置处理器中生成签名的代码 如下
import com.alipay.api.internal.util.AlipaySignature;
import org.apache.jmeter.threads.JMeterVariables;
import java.util.*;
import java.lang.*;
log.info("--------------------------------------"+ vars);
log.info("--------------------------------------"+ vars.get("version"));
String PRIVATE_KEY ="这里是密钥,你问开发要";
// Map pmMap = new HashMap();
List list = new ArrayList();
list.add("api_request_id");
list.add("app_id");
list.add("charset");
list.add("content");
list.add("method");
list.add("timestamp");
list.add("version");
//
// Iterator it = vars.getIterator();
// while(it.hasNext()){
// Map.Entry v = it.next();
// log.info("====++++++++++++===="+v.getKey()+ "============" + v.getValue());
pmMap.put( v.getKey(), v.getValue());
// }
// pmMap.remove("sign");
// pmMap.remove("sign_type");
String content = "";
// List keys = new ArrayList(pmMap.keySet());
// Collections.sort(keys);
Iterator var4 = list.iterator();
int index = 0;
while(var4.hasNext()) {
String key = var4.next();
log.info("========"+key);
if(!list.contains(key)){
continue;
}
Object value = vars.get(key);
content += (index == 0 ? "" : "&") + key+"=" + value;
++index;
}
//
String content = AlipaySignature.getSignContent(pmMap);
//String cc=StringEscapeUtils.unescapeJavaScript(StringEscapeUtils.unescapeHtml(StringEscapeUtils.escapeHtml(vars.get("content"))));
//log.info("ggggggggggggg"+cc);
//String content = "api_request_id="+(vars.get("api_request_id"))+"&app_id="+(vars.get("app_id"))+"&charset="+vars.get("charset")+"&content="+cc+"&method="+(vars.get("method"))+"&version="+(vars.get("version"))+"×tamp="+(vars.get("timestamp"));
String content = "123456";
log.info("-----------------"+content);
//签名
String signResult = AlipaySignature.rsaSign(content, PRIVATE_KEY, "utf-8", "RSA");
//log.info("ggggggggggggg"+signResult);
vars.put("sign",signResult);
此时你调试,会发现取不到值
需要添加一个用户自定义的变量,右键添加-配置元件-用户自定义的变量
把参数在这里定义一遍
然后再http请求里取值即可