赞
踩
使用postman工具调试接口时,需要编写Pre-request Script脚本进行签名。具体方法如下:
//设置accessKey和secretKey var accessKey = "*************"; var secretKey = "*************"; //生成当前时间戳 var timestamp = Math.round(new Date().getTime()); //定义一个随机数(32768, 65536)之间 var nonce = parseInt(Math.random()*(32769)+32768,10); pm.environment.set("ak", accessKey); pm.environment.set("random", nonce); pm.environment.set("timestamp",timestamp); var ss = new Array(); ss.push({"key": "accessKey", "value": accessKey}); ss.push({"key": "random", "value": nonce}); ss.push({"key": "timestamp", "value": timestamp}); var query = pm.request.url.query; var queryStr = JSON.stringify(query); var queryArr = JSON.parse(queryStr); for(const item of queryArr){ if(item.disabled){ continue; } if(item.value){ ss.push({"key": item.key, "value": item.value}); } } ss.sort(function(x,y){ return x.key.toString().localeCompare(y.key.toString()); }); var str = ""; for(const s of ss){ str += s.key + "=" + s.value + "&"; } str += "key=" + secretKey; var sign= CryptoJS.MD5(str).toString().toUpperCase(); pm.environment.set("sign", sign);
@Value("${remote.url}") private String baseUrl; @Value("${remote.accessKey}") private String accessKey; @Value("${remote.secretKey}") private String secretKey; //获取平台获取的ak,sk可以使用配置文件或者常量方式 //AkSkProperties 为sdk对象 AkSkProperties properties = new AkSkProperties(); properties.setAccessKey(accessKey); properties.setSecretKey(secretKey); properties.setUrl(baseUrl); //params为调用接口的请求参数 Map<String,String> params = new HashMap<>(); //通过传入请求参数,调用sdk方法排序、获取时间戳、随机数以及Sign签名 Map<String, String> map = AkSignUtils.getUrlSign(properties, params); //设置请求头,accessKey、timestamp、random以及sign HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.add("accessKey", map.get("accessKey")); requestHeaders.add("timestamp", map.get("timestamp")); requestHeaders.add("random", map.get("random")); requestHeaders.add("sign", map.get("sign")); //使用RestTemplate进行接口调用 RestTemplate template = new RestTemplate(); HttpEntity<String> requestEntity = new HttpEntity<>(null, requestHeaders); ResponseEntity<String> response = template.exchange(baseUrl, HttpMethod.GET, requestEntity, String.class); String result = response.getBody(); System.out.println(result);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。