添加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);
+ }
+
+
+}