首页 > 其他分享 >浙里办调试接口总结

浙里办调试接口总结

时间:2022-09-27 10:46:06浏览次数:49  
标签:浙里 接口 getStr param import put new 调试 String

public R zlbLoginnew(String ticket) {
String SecretKey="xxx";
String AccessKey="xxx";
String url="浙里办个人登陆获取信息地址IC33xxx02";

String time=DateUtil.format(new Date(), "yyyyMMddHHmmss");
Digester md5 = new Digester(DigestAlgorithm.MD5);
String sign = md5.digestHex(AccessKey+SecretKey+time);
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("servicecode", AccessKey);
paramMap.put("method", "ticketValidation");
paramMap.put("time", time);
paramMap.put("sign", sign);
paramMap.put("st", ticket);
paramMap.put("datatype", "json");
String requestMethod="POST";
Map<String, String> head= HmacAuthUtil.generateHeader(url,requestMethod,AccessKey,SecretKey);
String result = HttpRequest.post(url).headerMap(head,false).form(paramMap)
.timeout(20000)
.execute().body();
log.info(result);
JSONObject jo=JSONUtil.parseObj(result);
String token = jo.getStr("token");
if(StrUtil.isNotBlank(token)){
HashMap<String, Object> paramMap2 = new HashMap<>();
paramMap2.put("servicecode", AccessKey);
paramMap2.put("method", "getUserInfo");
paramMap2.put("time", time);
paramMap2.put("sign", sign);
paramMap2.put("token", token);
paramMap2.put("datatype", "json");
String result2 = HttpRequest.post(url).headerMap(head,false).form(paramMap2)
.timeout(20000)
.execute().body();
log.info(result2);
JSONObject userjo=JSONUtil.parseObj(result2);
String success = userjo.getStr("result");
if(StrUtil.equals(success, "0")){
//真实姓名
String userName = userjo.getStr("username");
//浙里办id
String zlbId = userjo.getStr("userid");
//电话
String mobile = userjo.getStr("mobile");
//登录名称
String loginname = userjo.getStr("loginname");
//身份证号码
String idnum = userjo.getStr("idnum");


}else{
return R.failed("登录失败,请重新进入");
}
}else{
return R.failed("登录失败,请重新进入");
}
}

 

public R zlbFrloginnew(String ticket) {
String SecretKey="xxx";
String AccessKey="xxx";
String url="浙里办法人地址IC33xxx1";
String requestMethod="POST";

Map<String, String> head=HmacAuthUtil.generateHeader(url,requestMethod,AccessKey,SecretKey);
JSONObject j=JSONUtil.createObj();
j.set("token", ticket);
String result = HttpRequest.post(url).headerMap(head,false).body(j.toString(),"application/json")
.timeout(20000)
.execute().body();
JSONObject jo=JSONUtil.parseObj(result);
Boolean success = (Boolean)jo.get("success");
if(success){
String data=jo.getStr("info");
JSONObject userjo=JSONUtil.parseObj(data);
//真实姓名
String userName = userjo.getStr("username");
//浙里办id
String zlbId = userjo.getStr("userid");
//电话
String mobile = userjo.getStr("mobile");
//登录名称
String loginname = userjo.getStr("loginname");
//身份证号码
String idnum = userjo.getStr("idnum");


}else{
return R.failed("登录失败,请重新进入");
}
}

 

 

 

 

 

import javafx.util.Pair;
import lombok.extern.slf4j.Slf4j;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URL;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

@Slf4j
public class HmacAuthUtil {

/**
* 构造请求 header
* @param urlStr 请求url,全路径格式,比如:https://xxx/api/p/v1/user.get
* @param requestMethod 请求方法,大写格式,如:GET, POST
* @param accessKey 应用的 AK
* @param secretKey 应用的 SK
* @return
*/
public static Map<String, String> generateHeader(String urlStr,String requestMethod, String accessKey, String secretKey) {
log.info("params,urlStr={},requestMethod={},accessKey={},secretKey={}",urlStr,requestMethod,accessKey,secretKey);
Map<String, String> header = new HashMap<>();
try {
DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String date = dateFormat.format(new Date());
URL url = new URL(urlStr);
URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), null);

String canonicalQueryString = getCanonicalQueryString(uri.getQuery());

String message = requestMethod.toUpperCase() + "\n" + uri.getPath() + "\n" + canonicalQueryString + "\n" + accessKey + "\n" + date + "\n";

Mac hasher = Mac.getInstance("HmacSHA256");
hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));

byte[] hash = hasher.doFinal(message.getBytes());

// to lowercase hexits
DatatypeConverter.printHexBinary(hash);

// to base64
String sign = DatatypeConverter.printBase64Binary(hash);
header.put("X-BG-HMAC-SIGNATURE", sign);
header.put("X-BG-HMAC-ALGORITHM", "hmac-sha256");
header.put("X-BG-HMAC-ACCESS-KEY", accessKey);
header.put("X-BG-DATE-TIME", date);
} catch (Exception e) {
log.error("generate error",e);
throw new RuntimeException("generate header error");
}
log.info("header info,{}",header);
return header;
}

private static String getCanonicalQueryString(String query) {
if (query == null || query.trim().length() == 0) {
return "";
}
List<Pair<String, String>> queryParamList = new ArrayList<>();
String[] params = query.split("&");
for (String param : params) {
int eqIndex = param.indexOf("=");
String key = param;
String value = "";
if(eqIndex!=-1){
key = param.substring(0, eqIndex);
value = param.substring(eqIndex+1);
}
Pair<String, String> pair = new Pair<String, String>(key,value);
queryParamList.add(pair);
}

List<Pair<String, String>> sortedParamList = queryParamList.stream().sorted(Comparator.comparing(param -> param.getKey() + "=" + Optional.ofNullable(param.getValue()).orElse(""))).collect(Collectors.toList());
List<Pair<String, String>> encodeParamList = new ArrayList<>();
sortedParamList.stream().forEach(param -> {
try {
String key = URLEncoder.encode(param.getKey(), "utf-8");
String value = URLEncoder.encode(Optional.ofNullable(param.getValue()).orElse(""), "utf-8")
.replaceAll("\\%2B","%20")
.replaceAll("\\+","%20")
.replaceAll("\\%21","!")
.replaceAll("\\%27","'")
.replaceAll("\\%28","(")
.replaceAll("\\%29",")")
.replaceAll("\\%7E","~")
.replaceAll("\\%25","%")
;
encodeParamList.add(new Pair<>(key, value));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("encoding error");
}
});
StringBuilder queryParamString = new StringBuilder(64);
for (Pair<String, String> encodeParam : encodeParamList) {
queryParamString.append(encodeParam.getKey()).append("=").append(Optional.ofNullable(encodeParam.getValue()).orElse(""));
queryParamString.append("&");
}

return queryParamString.substring(0, queryParamString.length() - 1);
}
}

 

标签:浙里,接口,getStr,param,import,put,new,调试,String
From: https://www.cnblogs.com/wjsqqj/p/16733681.html

相关文章