2017-06-15 3 views
0

J'essaie un websocketclient sur mon android en utilisant la bibliothèque java_websocket de TooTallNate. Tout fonctionne bien sur ws. Pour wss, mon serveur de développement local a un certificat auto-signé que j'essaie de contourner dans mon client en utilisant instructions from here. Cependant,java websocket ne peut pas résoudre setwebsocketfactory

WebSocketClient.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sc)); 

ne marche pas non plus résoudre setWebSocketFactory ou DefaultSSLWebSocketClientFactory. Ai-je oublié quelque chose dans mes en-têtes de compilation pour le support SSL dans WSS? Ceci est ma dépendance

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

et cet en-tête ne marche pas résoudre soit

import org.java_websocket.client.DefaultSSLWebSocketClientFactory; 

Pouvez-vous me faire savoir ce que je suis absent sur. Merci!

Répondre

0

Nevermind. J'ai réussi. On dirait que l'API est actuellement différente.

Utilisez cet extrait de https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/SSLClientExample.java pour accepter les certificats auto-signés où mWebSocketClient est l'objet du type WebSocketClient.

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(); 
    }