使⽤SortedMap集合进⾏ASCII码从⼩到⼤排序(字典序)
⼀⼂前⾔
对接第三⽅医院的接⼝⽂档时, 取数据时有如此的约束: 参数进⾏ASCII排序拼接并使⽤院⽅给的key进⾏拼接再进⾏特定加密请求接⼝(这⾥使⽤MD5加密)
⼆⼂SortedMap的使⽤
SortedMap按官⽅的说辞就是, 进⾏ASCII排序规则的封装的接⼝, 这就⼤⼤的⽅便了我们的使⽤ !
需注意的是, SortedMap是针对数字, ⼤⼩写字母(重点)等进⾏规则排序的, 所以如果有参数是为⼩写⼜有⼤写的⽽且⼜需进⾏规则排序的情况下需⾃⼰转换参数replaceall()
三⼂下述为⼯具类⽅法
/**
* 参数名ASCII码从⼩到⼤排序(字典序)
* 并拼接key进⾏MD5加密⽣成sign
*
* @param parameters 参数名-值
* @param key 秘钥
* @return sign
*/
public static String createSign(SortedMap<String,String> parameters, String key) {
StringBuilder sb = new StringBuilder();
StringBuilder sbkey = new StringBuilder();
// 所有参与传参的参数按照accsii排序(升序)
Set<Map.Entry<String, String>> es = Set();
for (Map.Entry<String, String> entry : es) {
String k = Key();
String v = Value();
//空值不传递,不参与签名组串
if (StringUtils.isNotBlank(v)) {
sb.append(k).append("=").append(v).append("&");
sbkey.append(k).append("=").append(v).append("&");
}
}
sbkey.deleteCharAt(sb.length() - 1);
sbkey.append("&key=").append(key);
// 替换需⼩写的字段
String replaceStr = String());
// MD5加密,结果转换为⼤写字符
quireNonNull(MD5Util.md5(replaceStr)).toUpperCase();
}
/**
* 替换关键字
*
* @param splicingStr
* @return
*/
private static String replaceStr(String splicingStr) {
/
/ 替换关键字
if (ains("Id_card_no")) splicingStr = placeAll("Id_card_no","id_card_no");
if (ains("Medical_no")) splicingStr = placeAll("Medical_no","medical_no");
if (ains("Result_id")) splicingStr = placeAll("Result_id","result_id");
if (ains("Sums_one")) splicingStr = placeAll("Sums_one","sums_one");
// 数据返回
return splicingStr;
}
上述代码块是符合我的⽅法逻辑⾛的, 需注意
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论