JAVA对外的insert接口
/** * 获取TOKEN * @param appKey * @param appPwd * @return */ @GetMapping("/getToken") @ApiOperation(value = "获取TOKEN", notes = "获取TOKEN") public Map getToken(String appKey, String appPwd) { Map result =new HashMap(); String str = appKey+"_"+appPwd; String token =""; String code = "0"; String msg ="appkey或appPwd非法!"; if("wzzhly".equals(appKey)&&"1qaz!QAZ".equals(appPwd)){ token = TokenUtils.getToken(str); msg="token获取成功!"; code="1"; } result.put("code",code); result.put("token",token); result.put("msg",msg); return result; }
@GetMapping("/getReportFlowD")
@ApiOperation(value = "上报-日", notes = "上报-日")
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
this.doPost(request, response);
}
@PostMapping("/reportFlowD")
@ApiOperation(value = "上报-日", notes = "上报-日")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
Map responseMap = new HashMap();
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
Enumeration<String> list = request.getHeaderNames();
HumanFlowDataD humanFlowDataD;
while (list.hasMoreElements()) {
String str = list.nextElement();
String str1 = request.getHeader(str);
if (str.equals("token")) {
String verifyTokenRes = verifyToken(str1);
if ("succ".equals(verifyTokenRes)) {
DataInputStream inputStream = null;
String strInputstream ="";
inputStream =new DataInputStream(request.getInputStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] by = new byte[2048];
int n;
while((n=inputStream.read(by))!=-1){
baos.write(by,0,n);
}
strInputstream = new String(baos.toByteArray());
inputStream.close();
baos.close();
JSONObject jsonObject=JSONObject.parseObject(strInputstream);
log.info("转化的json数据:" + jsonObject);
humanFlowDataD = new Gson().fromJson(jsonObject.toString(), HumanFlowDataD.class);
log.info("转化后的对象:" + humanFlowDataD.getFlow_name()+","+ humanFlowDataD.getFlow_date());
int i = humanFlowDataDService.insert(humanFlowDataD);
if (i > 0) {
responseMap.put("code", "1");
responseMap.put("msg", "日数据上传成功");
} else {
responseMap.put("code", "0");
responseMap.put("msg", "日数据上传失败");
}
} else {
responseMap.put("code", "0");
responseMap.put("msg", "TOKE校验失败:失败码" + verifyTokenRes);
}
PrintWriter out = response.getWriter();
JSONObject json = new JSONObject(responseMap);
out.write(json.toString());
out.flush();
out.close();
}
}
}
//token
public class TokenEncryptUtils { // 编码密码,可自定义 private static final String ENCODED_PASSWORD = "ouyangjun"; /** * * 编码 * * @param str * * @return * */ public static String encoded(String str) { return strToHex(encodedString(str, ENCODED_PASSWORD)); } /** * 转换 * @param str * * @param password * * @return * */ private static String encodedString(String str, String password) { char[] pwd = password.toCharArray(); int pwdLen = pwd.length; char[] strArray = str.toCharArray(); for (int i = 0; i < strArray.length; i++) { strArray[i] = (char) (strArray[i] ^ pwd[i % pwdLen] ^ pwdLen); } return new String(strArray); } private static String strToHex(String s) { return bytesToHexStr(s.getBytes()); } private static String bytesToHexStr(byte[] bytesArray) { StringBuilder builder = new StringBuilder(); String hexStr; for (byte bt : bytesArray) { hexStr = Integer.toHexString(bt & 0xFF); if (hexStr.length() == 1) { builder.append("0"); builder.append(hexStr); } else { builder.append(hexStr); } } return builder.toString(); } /** * * 解码 * * @param str * * @return * */ public static String decoded(String str) { String hexStr = null; try { hexStr = hexStrToStr(str); } catch (Exception e) { e.printStackTrace(); } if (hexStr != null) { hexStr = encodedString(hexStr, ENCODED_PASSWORD); } return hexStr; } private static String hexStrToStr(String hexStr) { return new String(hexStrToBytes(hexStr)); } private static byte[] hexStrToBytes(String hexStr) { String hex; int val; byte[] btHexStr = new byte[hexStr.length() / 2]; for (int i = 0; i < btHexStr.length; i++) { hex = hexStr.substring(2 * i, 2 * i + 2); val = Integer.valueOf(hex, 16); btHexStr[i] = (byte) val; } return btHexStr; } }
//token util
import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; /** * token生成和校验 * */ public class TokenUtils { private static Map<String, String> MAP_TOKENS = new HashMap<String, String>(); private static final int VALID_TIME = 60 * 60 * 60; // token有效期(秒) public static final String TOKEN_ERROR = "FF"; // 非法 public static final String TOKEN_OVERDUE = "GQ"; // 过期 public static final String TOKEN_FAILURE = "SX"; // 失效 /** * * 生成token * @param str: 该字符串可自定义,在校验token时要保持一致 * @return */ public static String getToken(String str) { String token = TokenEncryptUtils.encoded(getCurrentTime() + "," + str); MAP_TOKENS.put(str, token); return token; } /** * * 校验token的有效性 * * @param token * * @return * */ public static String checkToken(String token) { if (token == null) { return TOKEN_ERROR; } try { String[] tArr = TokenEncryptUtils.decoded(token).split(","); if (tArr.length != 2) { return TOKEN_ERROR; } // token生成时间戳 int tokenTime = Integer.parseInt(tArr[0]); // 当前时间戳 int currentTime = getCurrentTime(); if (currentTime - tokenTime < VALID_TIME) { String tokenStr = tArr[1]; String mToken = MAP_TOKENS.get(tokenStr); if (mToken == null) { return TOKEN_OVERDUE; } else if (!mToken.equals(token)) { return TOKEN_FAILURE; } return tokenStr; } else { return TOKEN_OVERDUE; } } catch (Exception e) { e.printStackTrace(); } return TOKEN_ERROR; } /** * 获取当前时间戳(10位整数) * */ public static int getCurrentTime() { return (int) (System.currentTimeMillis() / 1000); } /** * * 移除过期的token * */ public static void removeInvalidToken() { int currentTime = getCurrentTime(); for (Entry<String, String> entry : MAP_TOKENS.entrySet()) { String[] tArr = TokenEncryptUtils.decoded(entry.getValue()).split(","); int tokenTime = Integer.parseInt(tArr[0]); if (currentTime - tokenTime > VALID_TIME) { MAP_TOKENS.remove(entry.getKey()); } } } /** * * 测试 * * @param args * */ // private static final String OPERATION_EXIT = "EXIT"; // public static void main(String[] args) { // String str = "username_and_password"; // String token = TokenUtils.getToken(str); // System.out.println("生成的token:"+token); // System.out.println("输入token,EXIT/E 退出"); // //让程序一直运行 // Scanner scan = new Scanner(System.in); // while(scan.hasNext()) { // String in = scan.next().toString(); // if(OPERATION_EXIT.equals(in.toUpperCase()) // || OPERATION_EXIT.substring(0, 1).equals(in.toUpperCase())) { // scan.close(); // System.out.println("您成功已退出!"); // break; // } // System.out.println("您输入token的值:"+in); // // 校验token // String checkToken = TokenUtils.checkToken(in); // System.out.println("checkToken Result: " + checkToken); // if (str.equals(checkToken)) { // System.out.println("==>token verification succeeded!"); // } // } // } }
参考链接:https://blog.csdn.net/weixin_42894393/article/details/82385812
https://blog.csdn.net/p812438109/article/details/86677329
生命毋需绚烂,只要活出自我

浙公网安备 33010602011771号