RsRequestUtils.java
4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package com.bsth.data.utils;
import com.bsth.util.ConfigUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.ws.rs.client.WebTarget;
import java.security.MessageDigest;
import java.util.*;
/**
* RS 接口调用工具类
* Created by panzhao on 2017/8/2.
*/
public class RsRequestUtils {
private static String password;
static {
password = ConfigUtil.get("data.password");
}
static Logger logger = LoggerFactory.getLogger(RsRequestUtils.class);
/**
* 生成参数字符串
* @return
*/
public static String getParams(){
String rs="";
try {
String nonce = getNonce(6);
long t = System.currentTimeMillis();
Map<String, String> map = new HashMap<>();
map.put("password", password);
map.put("timestamp", t + "");
map.put("nonce", nonce);
String sign = getSHA1(map);
rs = "?password="+password+"×tamp="+t+"&nonce="+nonce+"&sign="+sign;
}catch (Exception e){
logger.error("", e);
}
return rs;
}
/**
* 生成参数字符串
* @return
*/
public static String getParams(Map<String, String> paramMap){
StringBuilder rs=new StringBuilder("?");
try {
String nonce = getNonce(6);
long t = System.currentTimeMillis();
paramMap.put("password", password);
paramMap.put("timestamp", t + "");
paramMap.put("nonce", nonce);
String sign = getSHA1(paramMap);
paramMap.put("sign", sign);
//rs = "?password="+password+"×tamp="+t+"&nonce="+nonce+"&sign="+sign;
Set<String> ks = paramMap.keySet();
for(String k : ks){
rs.append(k + "=" + paramMap.get(k) + "&");
}
rs.deleteCharAt(rs.length() - 1);
}catch (Exception e){
logger.error("", e);
}
return rs.toString();
}
/**
* 生成随机字符串
* @return
*/
public static String getNonce(int length) {
String base = "abcdefghijklmnopqrstuvwxyz0123456789";
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(base.length());
sb.append(base.charAt(number));
}
return sb.toString();
}
private static String getSHA1(Map<String, String> map) throws Exception {
try {
String[] array = new String[map.size()];
map.values().toArray(array);
StringBuffer sb = new StringBuffer();
// 字符串排序
Arrays.sort(array);
for (int i = 0; i < array.length; i++) {
sb.append(array[i]);
}
String str = sb.toString();
// SHA1签名生成
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(str.getBytes());
byte[] digest = md.digest();
StringBuffer hexstr = new StringBuffer();
String shaHex = "";
for (int i = 0; i < digest.length; i++) {
shaHex = Integer.toHexString(digest[i] & 0xFF);
if (shaHex.length() < 2) {
hexstr.append(0);
}
hexstr.append(shaHex);
}
return hexstr.toString();
} catch (Exception e) {
throw e;
}
}
public static WebTarget addParams(WebTarget wt) {
String rs="";
try {
String nonce = getNonce(6);
long t = System.currentTimeMillis();
Map<String, String> map = new HashMap<>();
map.put("password", password);
map.put("timestamp", t + "");
map.put("nonce", nonce);
String sign = getSHA1(map);
wt.queryParam("password", password).queryParam("timestamp", t).queryParam("nonce", nonce).queryParam("sign", sign);
}catch (Exception e){
logger.error("", e);
}
return wt;
}
}