zoukankan      html  css  js  c++  java
  • Java连接WebSocket服务忽略证书校验

    <dependency>
        <groupId>org.java-websocket</groupId>
        <artifactId>Java-WebSocket</artifactId>
        <version>1.5.2</version>
    </dependency>
    @Test
    public void testWssWithWebSocketServer() throws Exception {
        TrustManager trustManager = new X509ExtendedTrustManager() {
            @Override
            public void checkClientTrusted(X509Certificate[] chain, String authType, Socket socket) throws CertificateException {
    
            }
    
            @Override
            public void checkServerTrusted(X509Certificate[] chain, String authType, Socket socket) throws CertificateException {
    
            }
    
            @Override
            public void checkClientTrusted(X509Certificate[] chain, String authType, SSLEngine engine) throws CertificateException {
    
            }
    
            @Override
            public void checkServerTrusted(X509Certificate[] chain, String authType, SSLEngine engine) throws CertificateException {
    
            }
    
            @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 new X509Certificate[]{};
            }
        };
        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, new TrustManager[]{trustManager}, null);
    
        URI uri = URI.create("wss://127.0.0.1:8443/websocket");
        SSLSocketFactory socketFactory = sslContext.getSocketFactory();
        WebSocketClient webSocketClient = new WebSocketClient(uri) {
            @Override
            public void onOpen(ServerHandshake serverHandshake) {
                logger.info("onOpen");
            }
    
            @Override
            public void onMessage(String s) {
                logger.info("onMessage: " + s);
            }
    
            @Override
            public void onClose(int i, String s, boolean b) {
                logger.info("onClose");
            }
    
            @Override
            public void onError(Exception e) {
                logger.info("onError: " + e.getMessage(), e);
            }
        };
        webSocketClient.setSocketFactory(socketFactory);
        webSocketClient.connectBlocking();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        webSocketClient.send(simpleDateFormat.format(new Date()));
        webSocketClient.closeBlocking();
    }
    回到目录

    如果您发现笔者措辞不严谨、逻辑不合理,甚至代码有错误、结论很偏颇等等问题,欢迎联系QQ:562759534。笔者感激各位的讨论和指正,并在此不胜感激!拜谢!
  • 相关阅读:
    Chapter 7 Integrity(完整性), Views(视图), Security(安全性), and Catalogs(目录)
    Qt计时器
    linux命令:linux文件处理命令
    JSON.stringify()的不常见用法
    flex知识点归纳
    css伪类
    开发资源汇总
    Math.cbrt() Math.sqrt() Math.pow()
    代码开发注意事项和规范
    关于数组数据容易忽略的点
  • 原文地址:https://www.cnblogs.com/LOVE0612/p/15680240.html
Copyright © 2011-2022 走看看