快递100生成temp规则
时间: 2023-08-07 16:03:43 浏览: 200
快递100生成temp规则是指在快递100 API 中生成请求参数 "temp" 的规则。
"temp" 参数是在请求快递100 API 时加密生成的,使用该参数可以避免快递信息被恶意抓取。
生成 "temp" 参数的规则如下:
1. 将请求参数按照参数名称的字母顺序排序,如果参数名称相同,则按照对应的值的字母顺序排序。
2. 将排序后的参数名称和参数值拼接成一个字符串,如 "com=shunfeng&num=1234567890"。
3. 在拼接后的字符串后面加上 API 密钥,如 "com=shunfeng&num=1234567890密钥"。
4. 对拼接后的字符串进行 MD5 加密,生成 "temp" 参数值。
Java 代码示例:
```
import java.security.MessageDigest;
import java.util.Map;
import java.util.TreeMap;
public class TempGenerator {
public static String generateTemp(Map<String, String> params, String apiKey) {
// 使用 TreeMap 对参数按照名称排序
Map<String, String> sortedParams = new TreeMap<>(params);
StringBuilder sb = new StringBuilder();
// 拼接参数
for (Map.Entry<String, String> entry : sortedParams.entrySet()) {
sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
}
// 加入 API 密钥
sb.append(apiKey);
try {
// 计算 MD5 值
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(sb.toString().getBytes());
byte[] bytes = md.digest();
StringBuilder result = new StringBuilder();
// 将 MD5 值转成字符串
for (byte b : bytes) {
String hex = Integer.toHexString(b & 0xff);
if (hex.length() == 1) {
result.append("0");
}
result.append(hex);
}
return result.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
```
使用示例:
```
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
String apiKey = "your_api_key"; // 替换成你的 API 密钥
Map<String, String> params = new HashMap<>();
params.put("com", "shunfeng"); // 快递公司
params.put("num", "1234567890"); // 快递单号
String temp = TempGenerator.generateTemp(params, apiKey);
System.out.println(temp);
}
}
```
需要注意的是,使用 "temp" 参数生成规则需要在请求快递100 API 时增加相应的参数,具体可以查看快递100官网上的API文档。
阅读全文