2017-06-15 80 views
0

我正在嘗試使用來自TooTallNate的java_websocket庫的android上的websocketclient。一切正常工作在WS上。對於wss,我的本地開發服務器有一個自簽名證書,我試圖在我的客戶端使用instructions from here來繞過。然而,java websocket無法解析setwebsocketfactory

WebSocketClient.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sc)); 

犯規議決setWebSocketFactoryDefaultSSLWebSocketClientFactory。我在WSS的SSL支持的編譯頭文件中丟失了什麼?這是我的依賴

compile 'org.java-websocket:Java-WebSocket:1.3.4' 

這頭犯規議決

import org.java_websocket.client.DefaultSSLWebSocketClientFactory; 

你能不能讓我知道我錯過了。謝謝!

回答

0

沒關係。得到它的工作。看起來API目前是不同的。

使用此片段https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/SSLClientExample.java接受自簽名證書,其中mWebSocketClientWebSocketClient類型的對象。

TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { 
     public X509Certificate[] getAcceptedIssuers() { 
      X509Certificate[] myTrustedAnchors = new X509Certificate[0]; 
      return myTrustedAnchors; 
     } 

     @Override 
     public void checkClientTrusted(X509Certificate[] certs, 
             String authType) {} 

     @Override 
     public void checkServerTrusted(X509Certificate[] certs, 
             String authType) {} 
    } }; 
    try { 
     SSLContext sslContext = SSLContext.getInstance("TLS"); 
     sslContext.init(null, trustAllCerts, new SecureRandom()); 
     SSLSocketFactory factory = sslContext.getSocketFactory(); 
     mWebSocketClient.setSocket(factory.createSocket()); 
     mWebSocketClient.connectBlocking(); 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 
    }