接口调用工具(postman,apipost)使用aksk调用接口脚本

使用postman工具调试接口时,需要编写Pre-request Script脚本进行签名。具体方法如下:

  1. 复制如下脚本到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);
  1. 在header中增加四个参数,分别是:accessKey、timestamp、random、sign,如下图所示:
    在这里插入图片描述------------------------分割线---------------------------
    后端调用Demo
    1.引入sdk的包
    2.在本地系统配置文件中配置ak、sk以及url,可以通过配置文件方式也可以定义常量。如下图。在这里插入图片描述
    3.编写调用方法,可以使用HttpClient或者RestTemplate进行接口调用。如下图。
@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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值