我正在使用TooTallNate的java_websocket库在我的安卓上试用websocketclient。在ws上一切工作正常。对于wss,我的本地开发服务器有一个自签名证书,我正尝试在使用instructions from here的客户机中绕过该证书。然而,
WebSocketClient.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sc)); 既不解析setWebSocketFactory也不解析DefaultSSLWebSocketClientFactory。我是不是在WSS中的SSL支持的编译头中遗漏了什么?这是我的依赖项
compile 'org.java-websocket:Java-WebSocket:1.3.4'并且这个标头也不能解析
import org.java_websocket.client.DefaultSSLWebSocketClientFactory;你能让我知道我错过了什么吗?谢谢!
发布于 2017-06-16 10:06:39
不要紧。让它起作用了。看起来API当前是不同的。
使用https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/SSLClientExample.java中的此代码片段接受自签名证书,其中mWebSocketClient是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();
}https://stackoverflow.com/questions/44572162
复制相似问题