手机淘宝api签名(sign)的算法(Java版)

 时间:2026-02-15 08:40:20

1、自己创建一个utils包,并创建一个类,命名为TaoBao,如下图:

手机淘宝api签名(sign)的算法(Java版)

手机淘宝api签名(sign)的算法(Java版)

2、在TaoBao这个类里粘贴如下代码:

public static String getSign(String url, String secret) throws Exception {

String[] urls = url.split("&");

return Signing(urls, secret);

}

private static String Signing(String[] urls, String secret) throws Exception {

Map<String, String> params = new HashMap<String, String>();

for (int i = 0; i < urls.length; i++) {

String item[] = urls[i].split("=");

params.put(item[0], item[1]);

}

// 第一步:检查参数是否已经排序

String[] keys = params.keySet().toArray(new String[0]);

Arrays.sort(keys);

// 第二步:把所有参数名和参数值串在一起

StringBuilder strBuilder = new StringBuilder();

for (String key : keys) {

String value = params.get(key);

strBuilder.append(key).append(value);

}

// 第三步:使用MD5/HMAC加密

byte[] bytes = encryptHMAC(strBuilder.toString(), secret);

// 第四步:把二进制转化为大写的十六进制

return byte2hex(bytes);

}

private static byte[] encryptHMAC(String data, String secret) throws IOException {

byte[] bytes = null;

try {

SecretKey secretKey = new SecretKeySpec(secret.getBytes("UTF-8"), "HmacMD5");

Mac mac = Mac.getInstance(secretKey.getAlgorithm());

mac.init(secretKey);

bytes = mac.doFinal(data.getBytes("UTF-8"));

} catch (GeneralSecurityException gse) {

Log.e("TB_ERR", gse.getMessage());

}

return bytes;

}

public static String byte2hex(byte[] bytes) {

StringBuilder sign = new StringBuilder();

for (int i = 0; i < bytes.length; i++) {

String hex = Integer.toHexString(bytes[i] & 0xFF);

if (hex.length() == 1) {

sign.append("0");

}

sign.append(hex.toUpperCase());

}

return sign.toString();

}

手机淘宝api签名(sign)的算法(Java版)

3、以上为sign的签名算法,调用方法如下图:

以下附上代码:

private void showSign() {

String words ="要检索的关键字";

String nowTime = sdf.format(new Date());

String params = "timestamp="

+ nowTime

+ "&v=2.0&app_key=这里是你的appkey&method=这里是你调用的api地方法&partner_id=top-sdk-java-20150806&format=json&platform=2&sort=tk_total_commi&q="

+ words

+ "&page_no="

+ (page + 1)

+ "&fields=这里是你要获取的字段内容&sign_method=hmac";

String url = "";

try {

url = urlPath

+ TaoBao.getSign(params, "这里换成你的scret")

+ "&timestamp=" + URLEncoder.encode(nowTime, "utf-8")

+ "&v=2.0&app_key=这里是你的appkey&method=这里是你调用的api地方法=hmac&partner_id=top-sdk-java-20150806&format=json&platform=2&sort=tk_total_commi&q="

+ URLEncoder.encode(words, "utf-8")

+ "&page_no=" + (++page)

+ "&fields=这里是你要获取的字段内容";

// 这里对url进行post操作,并获取结果就行了

} catch (Exception e1) {

e1.printStackTrace();

}

}

手机淘宝api签名(sign)的算法(Java版)

4、到此步骤已经基本完成api的签名算法了,想要查看运行效果,右击项目,run as -> android application即可在手机端查看效果,如下图

手机淘宝api签名(sign)的算法(Java版)

  • 凉拌猪皮(简单调料)
  • 石器时代世界国际服最爱用的属主战队宠物
  • 别克林荫大道发动机号码在什么位置
  • 小敏和小美同时从学校出发,小敏向东走,小美向西走,5分钟后两人相距0.6千米
  • 一汽大众怎么进行问题投诉
  • 热门搜索
    孩子不听话怎么办 澳优爱优奶粉怎么样 怎么写新闻 红烧牛肉怎么做 饿了怎么办 胃酸过多怎么办 我的世界铁桶怎么做 湿疹怎么办 仓鼠咬人怎么办 雷锋怎么死的