Reputation: 129
I am trying out a websocketclient on my android using java_websocket library from TooTallNate. Everything works fine on ws. For wss, my local development server has a self signed certificate that I am trying to bypass in my client using instructions from here. However,
WebSocketClient.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sc));
doesnt resolve either setWebSocketFactory
or DefaultSSLWebSocketClientFactory
. Am I missing something in my compile headers for SSL support in WSS? This is my dependency
compile 'org.java-websocket:Java-WebSocket:1.3.4'
and this header doesnt resolve either
import org.java_websocket.client.DefaultSSLWebSocketClientFactory;
Can you let me know what I am missing out on. Thanks!
Upvotes: 2
Views: 2664
Reputation: 129
Nevermind. Got it working. Looks like the API is currently different.
Use this snippet from https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/SSLClientExample.java to accept self-signed certificates where mWebSocketClient
is object of 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();
}
Upvotes: 2