Get 请求
URL realUrl = new URL(accessToken_URL + "?appid=" + accessToken_AppId+"&appsecret="+accessToken_appSecret);
logger.info("执行获取token的url:"+accessToken_URL + "?appid=" + accessToken_AppId+"&appsecret="+accessToken_appSecret);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 建立实际的连接
connection.connect();
logger.info("建立实际的连接");
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
logger.info("获取AccessToKen接口返回值:"+result);
JSONObject jsStr = JSONObject.fromObject(result);//将字符转为json对象
if(jsStr.has("errCode")&&!"2000".equals(jsStr.getString("errCode"))){
return result;
}
JSONObject data = JSONObject.fromObject(jsStr.getString("data"));//将字符转为json对象
String accessToken=data.getString("accessToken");
if(!"".equals(accessToken)){
redisUtil.set(IMPORT_REDIS_KEY,accessToken);
//重置key有效期
redisUtil.expire(IMPORT_REDIS_KEY,3600);
}
Post请求
//判断redis中是否存在key不存在就访问接口获取
if(redisUtil.hasKey(IMPORT_REDIS_KEY)){
toKen=redisUtil.get(IMPORT_REDIS_KEY).toString();
}else {
//这里是调用了一个获取token的接口
String strToken = getAccessToken();
logger.info("银行增量更新接口获取AccessToKen返回值:"+strToken);
JSONObject jsStr = JSONObject.fromObject(strToken);//将字符转为json对象
if(jsStr.has("errCode")&&!"2000".equals(jsStr.getString("errCode"))){
return strToken;
}else {
toKen=redisUtil.get(IMPORT_REDIS_KEY).toString();
}
}
//时间戳
Long time = new Date().getTime();
String timeStr=Long.toString(time/1000);
//随机字符
String rst=Long.toString(Math.round(Math.random() * 99999999));
//传送的参数
List<BatchSyncBankVo> bvs=new ArrayList<>();
BatchBankVo bbv = new BatchBankVo();
bbv.setBatchId(timeStr+i);
Date date1 = new Date();
//将结果集赋值到对象
bbv.setBankInfos(bvs);
//转换成json 代码中json版本太老改为使用Gson
Gson gson= new Gson();
String payloadOr=gson.toJson(bbv);
//计算body
String payload = HmacMd5Util.byteArrayToHexString(HmacMd5Util.encryptHMAC(payloadOr.getBytes(),accessToken_appSecret));
//拼接签名参数
String toSign ="X-smp-appid="+accessToken_AppId+"&X-smp-nonce="+rst+"&"+"X-smp-timestamp="+timeStr+"&payload="+payload;
//计算签名
String Sign = HmacMd5Util.byteArrayToHexString(HmacMd5Util.encryptHMAC256(toSign.getBytes(),accessToken_appSecret));
//从这里开始是Post请求
URL realUrl = new URL(batchSyncBank_URL);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
//秘钥ID
conn.setRequestProperty("X-smp-appid",accessToken_AppId);
conn.setRequestProperty("X-smp-timestamp",timeStr);
conn.setRequestProperty("X-smp-nonce",rst);
//签名
conn.setRequestProperty("X-smp-sign",Sign);
conn.setRequestProperty("X-smp-accesstoken",toKen);
conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(payloadOr);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}