添加HTTPS协议工具类,以及路径常量和返回对象常用类
diff --git a/src/main/java/com/supwisdom/dlpay/hk/common/Constant.java b/src/main/java/com/supwisdom/dlpay/hk/common/Constant.java
new file mode 100644
index 0000000..2562a41
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/hk/common/Constant.java
@@ -0,0 +1,170 @@
+package com.supwisdom.dlpay.hk.common;

+

+/**

+ * 常量

+ */

+public interface Constant {

+

+    /**

+     * HK相关接口路径

+     */

+

+    //获取token

+    static public final String TOKEN = "https://api2.hik-cloud.com/oauth/token";

+

+    /******社区******/

+

+    //新增社区

+    static public final String ADD_COMMUNITIES = "https://api2.hik-cloud.com/api/v1/estate/system/communities";

+

+    //删除社区  ---使用时调用delete 方式  路径后加上要删除社区ID

+    static public final String DELETE_COMMUNITIES = "https://api2.hik-cloud.com/api/v1/estate/system/communities/";

+

+    //修改社区

+    static public final String UPDATE_COMMUNITIES = "https://api2.hik-cloud.com/api/v1/estate/system/communities/actions/updateCommunity";

+

+    //查询此租户下所有社区

+    static public final String COMMUNITIES_LIST = "https://api2.hik-cloud.com/api/v1/estate/system/communities/actions/list?pageNo=1&pageSize=10";

+

+

+    /******房屋******/

+

+    //新增楼栋

+    static public final String ADD_BUILDINGS = "https://api2.hik-cloud.com/api/v1/estate/system/buildings";

+

+    //新增单元

+    static public final String ADD_UNITS = "https://api2.hik-cloud.com/api/v1/estate/system/units";

+

+    //新增户室

+    static public final String ADD_ROOMS = "https://api2.hik-cloud.com/api/v1/estate/system/rooms";

+

+    //根据编号查询户室  路径后跟属性和参数

+    static public final String FIND_ROOMS_BY_NUMBER = "https://api2.hik-cloud.com/v1/estate/system/rooms/actions/info";

+

+    //根据户室ID查询户室  路径后跟属性和参数

+    static public final String FIND_ROOMS_BY_ID = "https://api2.hik-cloud.com/api/v1/estate/system/rooms/actions/infoById";

+

+    //删除楼栋  使用时调用delete方式   路径后跟楼栋ID

+    static public final String DELETE_BUILDINGS = "https://api2.hik-cloud.com/api/v1/estate/system/buildings/";

+

+    //删除单元  使用时调用delete方式   路径后跟单元ID

+    static public final String DELETE_UNITS = "https://api2.hik-cloud.com/api/v1/estate/system/units/";

+

+    //删除户室  使用时调用delete方式   路径后跟户室ID

+    static public final String DELETE_ROOMS = "https://api2.hik-cloud.com/api/v1/estate/system/rooms/";

+

+

+    /******人员******/

+

+    //新增人员

+    static public final String ADD_PERSON = "https://api2.hik-cloud.com/api/v1/estate/system/person";

+

+    //删除人员  使用时调用delete方式   路径后跟人员ID

+    static public final String DELETE_PERSON = "https://api2.hik-cloud.com/api/v1/estate/system/person/";

+

+    //修改人员

+    static public final String UPDATE_PERSON = "https://api2.hik-cloud.com/api/v1/estate/system/person/actions/updatePerson";

+

+    //设置人员所属社区

+    static public final String ADD_COMMUNITY_PERSON_RELATION = "https://api2.hik-cloud.com/api/v1/estate/system/person/actions/addCommunityRelation";

+

+    //删除人员所属社区

+    static public final String DELETE_COMMUNITY_PERSON_RELATION = "https://api2.hik-cloud.com/api/v1/estate/system/person/actions/deleteCommunityRelation";

+

+    //设置人员所属户室

+    static public final String ADD_ROOM_PERSON_RELATION = "https://api2.hik-cloud.com/api/v1/estate/system/person/actions/addRoomRelation";

+

+    //删除人员所属户室

+    static public final String DELETE_ROOM_PERSON_RELATION = "https://api2.hik-cloud.com/api/v1/estate/system/person/actions/deleteRoomRelation";

+

+    //获取人员户室信息    路径后跟属性和参数

+    static public final String FIND_PERSON_ROOMS = "https://api2.hik-cloud.com/api/v1/estate/system/person/actions/roomList";

+

+    /******物业人员管理******/

+

+    //新增物业管理人员

+    static public final String ADD_PROPERTY_MANAGER = "https://api2.hik-cloud.com/api/v1/estate/system/property";

+

+    //修改物业管理人员

+    static public final String UPDATE_PROPERTY_MANAGER = "https://api2.hik-cloud.com/api/v1/estate/system/property/actions/updateProperty";

+

+    //删除物业管理人员   使用时调用delete方式   路径后跟物业人员ID

+    static public final String DELETE_PROPERTY_MANAGER = "https://api2.hik-cloud.com/api/v1/estate/system/property/";

+

+    /******设备管理******/

+

+    //查询社区下设备通道列表  路径后跟属性参数

+    static public final String FIND_COMMUNITY_DEVICE = "https://api2.hik-cloud.com/api/v1/estate/devices/channels/actions/listByCommunityId";

+

+    /******卡片管理******/

+

+    //新增卡片(白卡)

+    static public final String ADD_CARDS = "https://api2.hik-cloud.com/api/v1/estate/system/cards";

+

+    //删除卡片(白卡)  使用时调用delete方式   路径后跟卡片ID

+    static public final String DELETE_CARDS = "https://api2.hik-cloud.com/api/v1/estate/system/cards/";

+

+    //开卡

+    static public final String OPEN_CARD = "https://api2.hik-cloud.com/api/v1/estate/system/cards/actions/openCard";

+

+    //退卡

+    static public final String REFUND_CARD = "https://api2.hik-cloud.com /api/v1/estate/system/cards/actions/refundCard";

+

+    //换卡

+    static public final String CHANGE_CARD = "https://api2.hik-cloud.com/api/v1/estate/system/cards/actions/changeCard";

+

+    //挂失卡

+    static public final String LOSS_CARD = "https://api2.hik-cloud.com/api/v1/estate/system/cards/actions/lossCard";

+

+    //解挂卡

+    static public final String CANCEL_LOSS_CARD = "https://api2.hik-cloud.com/api/v1/estate/system/cards/actions/cancelLossCard";

+

+    //补卡

+    static public final String REISSUE_CARD = "https://api2.hik-cloud.com/api/v1/estate/system/cards/actions/reissueCard";

+

+    /******门禁组件******/

+

+    //获取人员门禁设备信息  路径后跟属性参数

+    static public final String FIND_PERSON_REMOTE_DEVICE = "https://api2.hik-cloud.com/api/v1/estate/entranceGuard/remoteControl/actions/deviceList";

+

+    /******人脸信息******/

+

+    //人脸信息下发

+    static public final String ISSUED_FACE = "https://api2.hik-cloud.com/api/v1/estate/entranceGuard/permissions/actions/faceIssued";

+

+    //人脸信息删除

+    static public final String DELETE_ISSUED_FACE = "https://api2.hik-cloud.com/api/v1/estate/entranceGuard/permissions/actions/deleteFaceIssued";

+

+    /******远程控门******/

+

+    //远程开门

+    static public final String REMOTE_DOOR = "https://api2.hik-cloud.com/api/v1/estate/entranceGuard/remoteControl/actions/gateControl";

+

+    /******动态密码******/

+

+    //动态密码生成

+    static public final String DYNAMIC_CODE = "https://api2.hik-cloud.com/api/v1/estate/entranceGuard/permissions/actions/dynamicCode";

+

+    /******访客管理组件******/

+

+    //访客登记

+    static public final String ADD_VISITORS = "https://api2.hik-cloud.com/api/v1/estate/visitors";

+

+    //访客删除  使用delete请求方式 后跟访客记录ID

+    static public final String DELETET_VISITORS = "https://api2.hik-cloud.com/api/v1/estate/visitors/";

+

+    /******消息管理组件******/

+

+    //创建消费者

+    static public final String ADD_CONSUMER = "https://api2.hik-cloud.com/api/v1/mq/consumer/group1";

+

+    //消息信息

+    static public final String CONSUME_MESSAGES = "https://api2.hik-cloud.com/api/v1/mq/consumer/messages";

+

+    //提交偏移量

+    static public final String COMMIT_OFFSETS = "https://api2.hik-cloud.com/api/v1/mq/consumer/offsets";

+

+    /******第三方云眸平台跳转******/

+    static public final String HIK_CLOUD_URL = "https://api2.hik-cloud.com";

+

+}

diff --git a/src/main/java/com/supwisdom/dlpay/hk/common/Resp.java b/src/main/java/com/supwisdom/dlpay/hk/common/Resp.java
new file mode 100644
index 0000000..dfeeb92
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/hk/common/Resp.java
@@ -0,0 +1,33 @@
+package com.supwisdom.dlpay.hk.common;

+

+import java.io.Serializable;

+

+public class Resp<T extends Serializable> {

+    private String code;

+    private String message;

+    private T data;

+

+    public String getCode() {

+        return code;

+    }

+

+    public void setCode(String code) {

+        this.code = code;

+    }

+

+    public String getMessage() {

+        return message;

+    }

+

+    public void setMessage(String message) {

+        this.message = message;

+    }

+

+    public T getData() {

+        return data;

+    }

+

+    public void setData(T data) {

+        this.data = data;

+    }

+}

diff --git a/src/main/java/com/supwisdom/dlpay/util/HTTPSCertifiedClient.java b/src/main/java/com/supwisdom/dlpay/util/HTTPSCertifiedClient.java
new file mode 100644
index 0000000..32b0ebf
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/util/HTTPSCertifiedClient.java
@@ -0,0 +1,32 @@
+package com.supwisdom.dlpay.util;

+

+import java.io.File;

+import java.io.FileInputStream;

+import java.security.KeyStore;

+import javax.net.ssl.SSLContext;

+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;

+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;

+import org.apache.http.ssl.SSLContexts;

+public class HTTPSCertifiedClient extends HTTPSClient {

+    public HTTPSCertifiedClient() {

+

+    }

+

+    @Override

+    public void prepareCertificate() throws Exception {

+        // 获得密匙库

+        KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());

+        FileInputStream instream = new FileInputStream(

+                new File("C:/Users/xxx.keystore"));

+        // FileInputStream instream = new FileInputStream(new File("C:/Users/xxx.keystore"));

+        try {

+            // 密匙库的密码

+            trustStore.load(instream, "password".toCharArray());

+        } finally {

+            instream.close();

+        }

+        SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(trustStore, TrustSelfSignedStrategy.INSTANCE)

+                .build();

+        this.connectionSocketFactory = new SSLConnectionSocketFactory(sslcontext);

+    }

+}

diff --git a/src/main/java/com/supwisdom/dlpay/util/HTTPSClient.java b/src/main/java/com/supwisdom/dlpay/util/HTTPSClient.java
new file mode 100644
index 0000000..0738c38
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/util/HTTPSClient.java
@@ -0,0 +1,52 @@
+package com.supwisdom.dlpay.util;

+

+import org.apache.http.config.Registry;

+import org.apache.http.config.RegistryBuilder;

+import org.apache.http.conn.socket.ConnectionSocketFactory;

+import org.apache.http.conn.socket.PlainConnectionSocketFactory;

+import org.apache.http.impl.client.CloseableHttpClient;

+import org.apache.http.impl.client.HttpClientBuilder;

+import org.apache.http.impl.client.HttpClients;

+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;

+

+public abstract class HTTPSClient extends HttpClientBuilder {

+    private CloseableHttpClient client;

+    protected ConnectionSocketFactory connectionSocketFactory;

+

+    /**

+     * 初始化HTTPSClient

+     *

+     * @return 返回当前实例

+     * @throws Exception

+     */

+    public CloseableHttpClient init() throws Exception {

+        this.prepareCertificate();

+        this.regist();

+

+        return this.client;

+    }

+

+    /**

+     * 准备证书验证

+     *

+     * @throws Exception

+     */

+    public abstract void prepareCertificate() throws Exception;

+

+    /**

+     * 注册协议和端口, 此方法也可以被子类重写

+     */

+    protected void regist() {

+        // 设置协议http和https对应的处理socket链接工厂的对象

+        Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()

+                .register("http", PlainConnectionSocketFactory.INSTANCE)

+                .register("https", this.connectionSocketFactory)

+                .build();

+        PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);

+        HttpClients.custom().setConnectionManager(connManager);

+

+        // 创建自定义的httpclient对象

+        this.client = HttpClients.custom().setConnectionManager(connManager).build();

+        // CloseableHttpClient client = HttpClients.createDefault();

+    }

+}

diff --git a/src/main/java/com/supwisdom/dlpay/util/HTTPSClientUtil.java b/src/main/java/com/supwisdom/dlpay/util/HTTPSClientUtil.java
new file mode 100644
index 0000000..ddc4d73
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/util/HTTPSClientUtil.java
@@ -0,0 +1,125 @@
+package com.supwisdom.dlpay.util;

+

+import com.google.gson.Gson;

+import com.supwisdom.dlpay.hk.common.Resp;

+import org.apache.http.HttpEntity;

+import org.apache.http.HttpResponse;

+import org.apache.http.NameValuePair;

+import org.apache.http.client.HttpClient;

+import org.apache.http.client.entity.UrlEncodedFormEntity;

+import org.apache.http.client.methods.HttpGet;

+import org.apache.http.client.methods.HttpPost;

+import org.apache.http.client.methods.HttpRequestBase;

+import org.apache.http.message.BasicNameValuePair;

+import org.apache.http.util.EntityUtils;

+

+import java.util.*;

+

+public class HTTPSClientUtil {

+    private static final String DEFAULT_CHARSET = "UTF-8";

+    public static String doPost(HttpClient httpClient, String url, Map<String, String> paramHeader,

+                                Map<String, String> paramBody) throws Exception {

+        return doPost(httpClient, url, paramHeader, paramBody, DEFAULT_CHARSET);

+    }

+

+    public static String doPost(HttpClient httpClient, String url, Map<String, String> paramHeader,

+                                Map<String, String> paramBody, String charset) throws Exception {

+

+        String result = null;

+        HttpPost httpPost = new HttpPost(url);

+        setHeader(httpPost, paramHeader);

+        setBody(httpPost, paramBody, charset);

+        HttpResponse response = httpClient.execute(httpPost);

+        if (response != null) {

+            HttpEntity resEntity = response.getEntity();

+            if (resEntity != null) {

+                result = EntityUtils.toString(resEntity, charset);

+            }

+        }

+

+        return result;

+    }

+

+    public static String doGet(HttpClient httpClient, String url, Map<String, String> paramHeader,

+                               Map<String, String> paramBody) throws Exception {

+        return doGet(httpClient, url, paramHeader, paramBody, DEFAULT_CHARSET);

+    }

+

+    public static String doGet(HttpClient httpClient, String url, Map<String, String> paramHeader,

+                               Map<String, String> paramBody, String charset) throws Exception {

+

+        String result = null;

+        HttpGet httpGet = new HttpGet(url);

+        setHeader(httpGet, paramHeader);

+

+        HttpResponse response = httpClient.execute(httpGet);

+        if (response != null) {

+            HttpEntity resEntity = response.getEntity();

+            if (resEntity != null) {

+                result = EntityUtils.toString(resEntity, charset);

+            }

+        }

+

+        return result;

+    }

+

+

+    private static void setHeader(HttpRequestBase request, Map<String, String> paramHeader) {

+        // 设置Header

+        if (paramHeader != null) {

+            Set<String> keySet = paramHeader.keySet();

+            for (String key : keySet) {

+                request.addHeader(key, paramHeader.get(key));

+            }

+        }

+    }

+

+    private static void setBody(HttpPost httpPost, Map<String, String> paramBody, String charset) throws Exception {

+        // 设置参数

+        if (paramBody != null) {

+            List<NameValuePair> list = new ArrayList<NameValuePair>();

+            Set<String> keySet = paramBody.keySet();

+            for (String key : keySet) {

+                list.add(new BasicNameValuePair(key, paramBody.get(key)));

+            }

+

+            if (list.size() > 0) {

+                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, charset);

+                httpPost.setEntity(entity);

+            }

+        }

+    }

+

+

+    public static void main(String[] args) throws Exception {

+        HttpClient httpClient = null;

+

+        httpClient = new HTTPSTrustClient().init();

+        //httpClient = new HTTPSCertifiedClient().init();

+

+        //String url = "https://api2.hik-cloud.com/oauth/token";

+        String url = "https://api2.hik-cloud.com/api/v1/estate/system/communities/actions/list?pageNo=1&pageSize=10";

+

+        Map<String, String> paramHeader = new HashMap<>();

+        paramHeader.put("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");

+        paramHeader.put("Authorization", "bearer 913d06ca-7f08-4103-9d43-b906c168b19e");

+

+        Map<String, String> paramBody = new HashMap<>();

+        //paramBody.put("client_id", "f2a70c45594f44e7a7468a5fcd9d5b62");

+        //paramBody.put("client_secret", "7f99dc28bcaa46aeb4596fe607ae95e1");

+        //paramBody.put("grant_type", "client_credentials");

+        //paramBody.put("scope", "app");

+        //String result = doPost(httpClient, url, paramHeader, paramBody);

+

+        String result = HTTPSClientUtil.doGet(httpClient, url, paramHeader, paramBody);

+

+        System.out.println(result);

+

+        Gson gson = new Gson();

+

+        Resp resp = gson.fromJson(result, Resp.class);

+

+        System.out.println(resp.getMessage());

+

+    }

+}
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/util/HTTPSTrustClient.java b/src/main/java/com/supwisdom/dlpay/util/HTTPSTrustClient.java
new file mode 100644
index 0000000..cd66751
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/util/HTTPSTrustClient.java
@@ -0,0 +1,39 @@
+package com.supwisdom.dlpay.util;

+

+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;

+

+import javax.net.ssl.SSLContext;

+import javax.net.ssl.TrustManager;

+import javax.net.ssl.X509TrustManager;

+import java.security.cert.CertificateException;

+import java.security.cert.X509Certificate;

+

+public class HTTPSTrustClient extends HTTPSClient {

+    public HTTPSTrustClient() {

+    }

+

+    @Override

+    public void prepareCertificate() throws Exception {

+        // 跳过证书验证

+        SSLContext ctx = SSLContext.getInstance("TLS");

+        X509TrustManager tm = new X509TrustManager() {

+            @Override

+            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

+            }

+

+            @Override

+            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

+            }

+

+            @Override

+            public X509Certificate[] getAcceptedIssuers() {

+                return null;

+            }

+        };

+        // 设置成已信任的证书

+        ctx.init(null, new TrustManager[] { tm }, null);

+        this.connectionSocketFactory = new SSLConnectionSocketFactory(ctx);

+    }

+

+

+}