소스 검색

视频平台对接

root 3 년 전
부모
커밋
549902d222

+ 3 - 0
src/main/java/com/zhiqiyun/open/config/BeanConfig.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.zhiqiyun.open.Application;
+import com.zhiqiyun.open.utils.SSLUtils;
 import lombok.extern.slf4j.Slf4j;
 import okhttp3.OkHttpClient;
 import org.lionsoul.ip2region.DbConfig;
@@ -33,6 +34,8 @@ public class BeanConfig {
     public OkHttpClient okHttpClient() {
         OkHttpClient.Builder builder = new OkHttpClient.Builder();
         builder.connectTimeout(30, TimeUnit.SECONDS);
+        builder.sslSocketFactory(SSLUtils.getSSLSocketFactory(), SSLUtils.getX509TrustManager());
+        builder.hostnameVerifier(SSLUtils.getHostnameVerifier());
         return builder.build();
     }
 

+ 7 - 0
src/main/java/com/zhiqiyun/open/core/video/VideoDockingService.java

@@ -23,4 +23,11 @@ public interface VideoDockingService {
      * @throws IOException IOException
      */
     void refreshValidToken() throws IOException;
+
+    /**
+     * 获取设备列表信息
+     *
+     * @throws IOException
+     */
+    void loadDeviceList() throws IOException;
 }

+ 28 - 11
src/main/java/com/zhiqiyun/open/core/video/impl/VideoDockingServiceImpl.java

@@ -5,20 +5,21 @@ import com.alibaba.fastjson.JSONObject;
 import com.zhiqiyun.open.core.video.VideoDockingService;
 import com.zhiqiyun.open.exception.ServiceException;
 import lombok.extern.slf4j.Slf4j;
-import okhttp3.FormBody;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
+import okhttp3.*;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.BoundValueOperations;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import javax.net.ssl.*;
 import java.io.IOException;
 import java.rmi.ServerException;
+import java.security.SecureRandom;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
@@ -31,9 +32,9 @@ import java.util.concurrent.TimeUnit;
 @Service
 public class VideoDockingServiceImpl implements VideoDockingService {
 
-    private final static String USER_NAME = "";
-    private final static String PASSWORD = "";
-    private final static String URI = "";
+    private final static String USER_NAME = "duijie";
+    private final static String PASSWORD = "Huawei@12#$";
+    private final static String URI = "https://172.169.12.21:18531";
     private final static String RESULT_CODE = "resultCode";
 
     private final static String VIDEO_JSESSIONID_TOKEN = "VIDEO_JSESSIONID_TOKEN";
@@ -41,7 +42,7 @@ public class VideoDockingServiceImpl implements VideoDockingService {
     @Resource
     private RedisTemplate<String, String> redisTemplate;
 
-    @Autowired
+    @Resource
     private OkHttpClient okHttpClient;
 
     @Override
@@ -54,7 +55,12 @@ public class VideoDockingServiceImpl implements VideoDockingService {
             paramValues.put("password", PASSWORD);
 
             Response response = okHttpPost("/loginInfo/login/v1.0", paramValues);
-            analysisRequestSuccess(response);
+            log.info(JSONObject.toJSONString(response));
+//            analysisRequestSuccess(response);
+            List<String> cookies = response.headers().values("Set-Cookie");
+            cookies.forEach(s -> {
+                log.info("name:{}", s);
+            });
             token = response.header("Set-Cookie");
             log.info("用户登录TOKEN:{}", token);
             if (StringUtils.isNotBlank(token)) {
@@ -72,6 +78,15 @@ public class VideoDockingServiceImpl implements VideoDockingService {
         analysisRequestSuccess(response);
     }
 
+    @Override
+    public void loadDeviceList() throws IOException {
+        Map<String, String> paramValues = new HashMap<>(1);
+        paramValues.put("Cookie", getValidToken());
+        Response response = okHttpPost("/device/deviceList/v1.0?deviceType=33&fromIndex=1&toIndex=10", paramValues);
+        analysisRequestSuccess(response);
+        log.info("获取到的设备列表:" + Objects.requireNonNull(response.body()).string());
+    }
+
     /**
      * 统一POST请求方法
      *
@@ -88,7 +103,9 @@ public class VideoDockingServiceImpl implements VideoDockingService {
         paramValues.forEach(formBuilder::add);
 
         Request.Builder builder = new Request.Builder();
-        builder.url(String.format("%s" + uri, URI));
+        String url = String.format("%s" + uri, URI);
+        log.info("URL:{}", url);
+        builder.url(url);
         builder.header("Content-Type", "application/json;charset=UTF-8");
         if (StringUtils.isNotBlank(cookie)) {
             builder.header("Cookie", cookie);

+ 17 - 4
src/main/java/com/zhiqiyun/open/mvc/controller/BzController.java

@@ -10,21 +10,22 @@ import com.zhiqiyun.open.core.models.user.OauthInfo;
 import com.zhiqiyun.open.core.service.BzService;
 import com.zhiqiyun.open.core.service.OauthService;
 import com.zhiqiyun.open.core.service.PlaceCategoryService;
+import com.zhiqiyun.open.core.video.VideoDockingService;
 import com.zhiqiyun.open.mvc.Result;
 import com.zhiqiyun.open.mvc.params.bz.QueryBzMediaParam;
 import com.zhiqiyun.open.mvc.params.bz.SaveBzMediaParam;
 import com.zhiqiyun.open.utils.ServletContext;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.io.IOException;
 import java.util.List;
 
+@Slf4j
 @RestController
 @RequestMapping("/bz")
 public class BzController {
@@ -38,6 +39,18 @@ public class BzController {
     @Autowired
     private PlaceCategoryService categoryService;
 
+    @Autowired
+    private VideoDockingService videoDockingService;
+
+    @GetMapping("/testLoadVideo")
+    public Result testLoadVideo() throws IOException {
+        try {
+            videoDockingService.loadDeviceList();
+        } catch (Exception e) {
+            log.error("BzController error:" + e.getMessage(), e);
+        }
+        return Result.instance(Result.Code.SUCCESS);
+    }
 
     @Permission(value = "bz.media", tags = "查询多媒体资源")
     @PostMapping("/findMediaPage")

+ 84 - 0
src/main/java/com/zhiqiyun/open/utils/SSLUtils.java

@@ -0,0 +1,84 @@
+package com.zhiqiyun.open.utils;
+
+import javax.net.ssl.*;
+import java.security.KeyStore;
+import java.security.SecureRandom;
+import java.security.cert.X509Certificate;
+import java.util.Arrays;
+
+/**
+ * @author xin yang
+ * @date 2022/9/21
+ */
+public class SSLUtils {
+
+    /**
+     * 获取SSLSocketFactory
+     *
+     * @return SSLSocketFactory
+     */
+    public static SSLSocketFactory getSSLSocketFactory() {
+        try {
+            SSLContext sslContext = SSLContext.getInstance("SSL");
+            sslContext.init(null, getTrustManager(), new SecureRandom());
+            return sslContext.getSocketFactory();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 获取TrustManager
+     *
+     * @return TrustManager[]
+     */
+    private static TrustManager[] getTrustManager() {
+        return new TrustManager[]{
+                new X509TrustManager() {
+                    @Override
+                    public void checkClientTrusted(X509Certificate[] chain, String authType) {
+                    }
+
+                    @Override
+                    public void checkServerTrusted(X509Certificate[] chain, String authType) {
+                    }
+
+                    @Override
+                    public X509Certificate[] getAcceptedIssuers() {
+                        return new X509Certificate[]{};
+                    }
+                }
+        };
+    }
+
+    /**
+     * 获取HostnameVerifier
+     *
+     * @return HostnameVerifier
+     */
+    public static HostnameVerifier getHostnameVerifier() {
+        return (s, sslSession) -> true;
+    }
+
+    /**
+     * 获取X509TrustManager
+     *
+     * @return X509TrustManager
+     */
+    public static X509TrustManager getX509TrustManager() {
+        X509TrustManager trustManager = null;
+        try {
+            TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+            trustManagerFactory.init((KeyStore) null);
+            TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
+            if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) {
+                throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers));
+            }
+            trustManager = (X509TrustManager) trustManagers[0];
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return trustManager;
+    }
+}