API接口调用

API网关设计:

一种是常用的基于HTTP网络协议

另一种RPC调用(当下火的微服务spring cloud和之前的Dubbo框架)

不同系统之间互调时,为达到调用方确保被授权,需提供被调方要求的token

以下是百度API接口的token获取代码

public static void main(String[] args) {
    String user_key = "d520c05ea2ab40568f119154ac7de67f";   //实际使用时客户需修改为自己的user_key
    String user_secret = "825a1efa5b29c29272ae8a6c5286fdrf";   //实际使用时客户需修改为自己的user_secret
    long timestamp = Integer.valueOf(String.valueOf(System.currentTimeMillis()/1000));
    String data = user_key + timestamp;
    String hmac = encode(data, user_secret);
    System.out.println(hmac);

}
private static String toHexString(byte[] bytes) {
    Formatter formatter = new Formatter();
    for (byte b : bytes) {
        formatter.format("%02x", b);

    }
    return formatter.toString();

}
private static String encode(String data, String key) {
    String token = null;
    try {
        SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), "HmacSHA1");
        Mac mac = Mac.getInstance("HmacSHA1");
        mac.init(signingKey);
        token = toHexString(mac.doFinal(data.getBytes()));
    } catch (Exception e) {
        e.printStackTrace();

    }
    return token;
}
还有就是公司对应的java.security.*包中的UUID类
String tokenKey = UUID.randomUUID().toString().toLowerCase().replaceAll("-", "") + "|" + DateUtils.getTimestamp().getTime();
        String newToken = UserPassword.getInstance().encrypt(tokenKey);
而token的获取也需要提供项目id和secret秘钥(id实际为事前分配给的,类似于百度的初测分配id)

你可能感兴趣的:(API接口调用)