1.增长前置beanshell脚本算法
2.beanshell脚本要点shell
import com.matrix.common.service.SignatureService; import org.apache.jmeter.protocol.http.control.Header; import org.apache.jmeter.config.Arguments; //获取签名头 public static String getSign(String contentSHA, String date,String nonce ){ String privateKey = vars.get("privateKey"); String method = "GET"; String accept = vars.get("accept"); String contentType = vars.get("contentType"); String nonceHeader = "x-bfs-signature-nonce:"+nonce; String url = vars.get("createRfqOrderUrl"); //调用jar包中SignatureService的sign方法进行进行签名 String signature = SignatureService.sign(privateKey,method,accept,contentSHA, contentType, date, nonceHeader, url); return signature; } //发送请求前增长签名相关的Header参数 public static void addHeaders( ){ //增长日期头 String date = (new Date()).toString(); sampler.getHeaderManager().removeHeaderNamed("Date"); sampler.getHeaderManager().add(new Header("Date",date)); //增长nonce头 String nonce = "550e8400e29b41d4a716446655440000"; sampler.getHeaderManager().removeHeaderNamed("x-bfs-signature-nonce"); sampler.getHeaderManager().add(new Header("x-bfs-signature-nonce",nonce)); //经过getArgument方法获取json body Arguments arguments = sampler.getArguments(); String content = arguments.getArgument(0).getValue(); log.info("content="+content); //增长Content-SHA256 头 String contentSHA = SignatureService.getContentSHA256(content); log.info("contentSHA="+contentSHA); sampler.getHeaderManager().removeHeaderNamed("Content-SHA256"); sampler.getHeaderManager().add(new Header("Content-SHA256",contentSHA)); //增长签名头 String signature = getSign(contentSHA,date,nonce); sampler.getHeaderManager().removeHeaderNamed("Authorization"); sampler.getHeaderManager().add(new Header("Authorization","bfs "+ vars.get("accessKeyId") +":"+signature)); return; } addHeaders();