使用postman工具调试接口时,需要编写Pre-request Script脚本进行签名。具体方法如下:
- 复制如下脚本到Pre-request Script中:
//设置accessKey和secretKeyvar accessKey ="*************";var secretKey ="*************";//生成当前时间戳var timestamp = Math.round(newDate().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 =newArray();
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);
- 在header中增加四个参数,分别是:accessKey、timestamp、random、sign,如下图所示:------------------------分割线--------------------------- 后端调用Demo 1.引入sdk的包 2.在本地系统配置文件中配置ak、sk以及url,可以通过配置文件方式也可以定义常量。如下图。 3.编写调用方法,可以使用HttpClient或者RestTemplate进行接口调用。如下图。
@Value("${remote.url}")privateString baseUrl;@Value("${remote.accessKey}")privateString accessKey;@Value("${remote.secretKey}")privateString secretKey;//获取平台获取的ak,sk可以使用配置文件或者常量方式//AkSkProperties 为sdk对象AkSkProperties properties =newAkSkProperties();
properties.setAccessKey(accessKey);
properties.setSecretKey(secretKey);
properties.setUrl(baseUrl);//params为调用接口的请求参数Map<String,String> params =newHashMap<>();//通过传入请求参数,调用sdk方法排序、获取时间戳、随机数以及Sign签名Map<String,String> map =AkSignUtils.getUrlSign(properties, params);//设置请求头,accessKey、timestamp、random以及signHttpHeaders requestHeaders =newHttpHeaders();
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 =newRestTemplate();HttpEntity<String> requestEntity =newHttpEntity<>(null, requestHeaders);ResponseEntity<String> response = template.exchange(baseUrl,HttpMethod.GET, requestEntity,String.class);String result = response.getBody();System.out.println(result);
本文转载自: https://blog.csdn.net/qq_42193799/article/details/134339029
版权归原作者 阿枝12138 所有, 如有侵权,请联系我们删除。
版权归原作者 阿枝12138 所有, 如有侵权,请联系我们删除。