Forráskód Böngészése

用工实名制接口测试。

tomatozq 5 éve
szülő
commit
22e9292d4e
1 módosított fájl, 131 hozzáadás és 0 törlés
  1. 131 0
      web/src/test/java/com/jpsoft/smart/OpenAPITest.java

+ 131 - 0
web/src/test/java/com/jpsoft/smart/OpenAPITest.java

@@ -0,0 +1,131 @@
+package com.jpsoft.smart;
+
+import com.alibaba.fastjson.JSONObject;
+import org.junit.Test;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Date;
+import java.util.TreeMap;
+
+public class OpenAPITest {
+
+    @Test
+    public void signTest(){
+        /**
+        接口参数签名方法
+        第一步:拼接参数字符串
+        将除sign以外的请求参数(包括标准参数,除非有特别说明)按照参数名称的字典升序排列,
+        然后按此顺序,将”参数名=参数值”用”&”符号连接。
+        appid=appcode123&data=[]&format=json&iscompany=2&method=employee.create&nonce=11223344&timestamp=1558593970&version=2.0
+        **/
+        TreeMap<String,Object> treeMap = new TreeMap<>();
+        treeMap.put("method","Project.Add");
+        treeMap.put("version","1.0");
+        treeMap.put("appid","yOtqoojmsmz");
+        treeMap.put("iscompany","1");
+        treeMap.put("format","json");
+
+        long timestamp = (new Date()).getTime()/1000;
+        treeMap.put("timestamp", timestamp);
+        treeMap.put("nonce", timestamp);
+
+        treeMap.put("data","[{\"ADDRESS\":\"湖北省\",\"CONTRACTPRICE\":\"80000.00\",\"DEPARTMENTINDUSTRYID\":\"68\",\"DISTRICTCCODE\":421002,\"DISTRICTCODE\":421002,\"ENDTIME\":\"859\",\"GCPROCESS\":\"1\",\"LATLNG\":\"114.225446,30.560052\",\"MONEYSOURCE\":130,\"NAME\":\"沙北碧桂园\",\"PROJECTDESC\":\".\",\"PROJECTTYPE\":\"117\",\"STARTTIME\":\"2018-11-02\"}]");
+        //treeMap.put("data","[{\"ADDRESS\":\"湖北省\",\"CONTRACTPRICE\":80000.00}]");
+
+        StringBuilder sb = new StringBuilder();
+
+        for (String key : treeMap.keySet()) {
+            if (sb.length()>0){
+                sb.append("&");
+            }
+
+            sb.append(key + "=" + treeMap.get(key));
+
+            System.out.println(key + ":" + treeMap.get(key));
+        }
+
+        /**
+        * 第二步:在拼接参数字符串后再拼接&appsecret,如&appsecret=df23hlir85353;appsecret即密钥,由服务信息平台技术支持人员提供。
+        * 示例:appid=appcode123&data=[]&format=json&iscompany=2&method=employee.create&nonce=11223344&timestamp=1558593970&version=2.0&appsecret=df23hlir85353gfgd86775jjdh6322
+        **/
+        sb.append("&appsecret=534a33e888b001a246b635b76e42d0dd");
+
+        /**
+         * (3)第三步:将上一步的获得的字符串全部转换为小写。再进行SHA256加密(SHA256 64位),生成的字符串就是验签数据sign。注意:SHA256加密哈希值请转换为16进制表示。
+        **/
+        //        String plainText = "appid=appcode123&data=[]&format=json&iscompany=2&method=employee.create&nonce=11223344&timestamp=1558593970&version=2.0&appsecret=df23hlir85353gfgd86775jjdh6322";
+        String plainText = sb.toString();
+
+        StringBuilder postDataSb = new StringBuilder();
+        postDataSb.append(plainText);
+
+        System.out.println(plainText);
+
+        System.out.println("转小写");
+        plainText = plainText.toLowerCase();
+        System.out.println(plainText);
+
+        try {
+            MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
+            messageDigest.update(plainText.getBytes("UTF-8"));
+            byte[] bytes = messageDigest.digest();
+
+            StringBuffer stringBuffer = new StringBuffer();
+
+            for (int i=0;i<bytes.length;i++) {
+                String temp = Integer.toHexString(bytes[i] & 0xFF);
+
+                if (temp.length() == 1) {
+                    stringBuffer.append("0");
+                }
+
+                stringBuffer.append(temp);
+            }
+
+            System.out.println("sign:" + stringBuffer.toString());
+
+            postDataSb.append("&sign=" + stringBuffer.toString());
+
+
+            System.out.println("postData:" + postDataSb);
+
+
+            byte[] postDataBytes = postDataSb.toString().getBytes("UTF-8");
+
+            HttpURLConnection conn = (HttpURLConnection)(new URL("http://jztest.e2r.cn:8115/foreign/upload/check")).openConnection();
+            conn.setRequestMethod("POST");
+            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+            conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
+            conn.setConnectTimeout(2000);
+            conn.setReadTimeout(5000);
+            conn.setDoOutput(true);
+            conn.getOutputStream().write(postDataBytes);
+
+            Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "GBK"));
+
+            StringBuilder sb2 = new StringBuilder();
+            for (int c; (c = in.read()) >= 0;) {
+                sb2.append((char)c);
+            }
+            in.close();
+            conn.disconnect();
+
+            String responseStr = sb2.toString();
+
+            System.out.println(responseStr);
+
+            JSONObject jsonObject = JSONObject.parseObject(responseStr);
+
+            //1575542056612
+            System.out.println("返回消息:" + jsonObject.get("message"));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}