我在安卓上有一个带有高速公路的客户端应用程序。使用ws时可以很好地通信,但是当我使用wss时存在一些问题,我使用的证书是自签名证书,所以我在WebSocketConnection类中进行了一些更改.java正如作者所说。
我使用这个项目 https://github.com/palmerc/SecureWebSockets。
错误如下:websockets internal error(java.lang.NullPointerException)
我在WebSocketConnection中添加的内容.java如下:
if (mWebSocketURI.getScheme().equalsIgnoreCase(WSS_URI_SCHEME)) {
try {
SSLContext sslContext=SSLContext.getInstance("TLS");
KeyManagerFactory.getInstance("X509");
TrustManagerFactory trustManagerFactory=TrustManagerFactory.getInstance("X509");
KeyStore trustkeyStore=KeyStore.getInstance("BKS");
trustkeyStore.load(MainActivity.activity.getResources().getAssets().open(KEYSTOREPATH_TRUST),
KEYSTOREPASSWORD.toCharArray());
sslContext.init(null,trustManagerFactory.getTrustManagers(), null);
factory=sslContext.getSocketFactory();
} catch (KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我遇到了同样的问题,所以我找到了一个新的很棒的库:
dependency 'org.java-websocket:Java-WebSocket:1.3.0'
在这里查看我的答案,以找到有关如何使用此库的更多解释。此库支持 WS、WSS、HEADERS。