Jmeter Beanshell 使用

1、Beanshell不支持泛型

原java请求:

import cn.***.***
public class App { private static RestTemplate restTemplate; static { restTemplate = new RestTemplate(); } public static void main(String[] args) throws Exception { String pcaCert = "@@@"; String laCert = "###"; String raCert = "$$$"; V2XSecData v2XSecData = PressureTool.genLaRequest(pcaCert, laCert, raCert, 11, 20); ResponseEntity<byte[]> resp = httpPostOctetStream("http://127.0.0.1:10030", "/api/v1/request-linkage-value", null, COERHelper.encode(v2XSecData)); if (resp.getStatusCode() == HttpStatus.OK) { V2XSecData laPraLinkageValueResponseSpdu = COERHelper.decode(V2XSecData.class, resp.getBody()); System.out.println(laPraLinkageValueResponseSpdu.toString()); } } private static ResponseEntity<byte[]> httpPostOctetStream(String url, String path, String appId, byte[] request) { Map<String, Object> params = Maps.newHashMap(); params.put("username", "root"); params.put("password", "123456"); String authUrl = url + "/api/v1/login"; HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.valueOf("application/json;UTF-8")); HttpEntity<String> strEntity = new HttpEntity(JSONUtils.toJSONString(params), headers); ResponseEntity<ReturnResult> result = restTemplate.postForEntity(authUrl, strEntity, ReturnResult.class, new Object[0]); ReturnResult body = (ReturnResult)result.getBody(); Map<String, String> data = (Map)body.getData(); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); httpHeaders.set("Authorization", "Bearer " + (String)data.get("token")); if (StringUtils.isNotEmpty(appId)) { httpHeaders.set("v-serviceId", appId); } HttpEntity httpEntity = new HttpEntity(request, httpHeaders); ResponseEntity<byte[]> resp = restTemplate.exchange(url + path, HttpMethod.POST, httpEntity, byte[].class, new Object[0]); return resp; }
}

beanshell去掉泛型使用

     String pcaCert = "@@@";
        String laCert = "###";
        String raCert = "$$$";
//System.out.println("@@@" + System.getProperty("user.dir")); try{ //long start = System.currentTimeMillis(); V2XSecData v2XSecData = PressureTool.genLaRequest(pcaCert, laCert, raCert, 51, 20); //long end = System.currentTimeMillis(); // long time = start - end; //System.out.println("------>"+time); RestTemplate restTemplate = new RestTemplate(); Map params = Maps.newHashMap(); params.put("username", "root"); params.put("password", "123456"); String authUrl = "http://127.0.0.1:10030" + "/api/v1/login"; HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.valueOf("application/json;UTF-8")); HttpEntity strEntity = new HttpEntity(JSONUtils.toJSONString(params), headers); ResponseEntity result = restTemplate.postForEntity(authUrl, strEntity, ReturnResult.class, new Object[0]); ReturnResult body = (ReturnResult)result.getBody(); Map data = (Map)body.getData(); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); httpHeaders.set("Authorization", "Bearer " + (String)data.get("token")); if (StringUtils.isNotEmpty(null)) { httpHeaders.set("v-serviceId", null); } HttpEntity httpEntity = new HttpEntity(COERHelper.encode(v2XSecData), httpHeaders);
ResponseEntity resp
= restTemplate.exchange("http://127.0.0.1:10030" + "/api/v1/request-linkage-value", HttpMethod.POST, httpEntity, byte[].class, new Object[0]);
System.out.println(resp.getStatusCode()); vars.put(
"code", resp.getStatusCode().toString()); }catch(Exception e){ //e.printStackTrace(); }

 

2、Beanshell返回值段语言

eg: 断言vars.put设置的参数

 

posted @ 2022-10-25 15:23  梧桐潇雨  阅读(88)  评论(0)    收藏  举报