我在Android上有一个客户端应用程序与高速公路。使用ws时可以很好地进行通信,但是当我使用wss时会出现一些问题,我使用的证书是自签名证书,因此我在WebSocketConnection.java类中做了一些更改,如作者所说。
我使用https://github.com/palmerc/SecureWebSockets这个项目。
错误如下: websockets内部错误(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();
}
}
答案 0 :(得分:0)
我有同样的问题所以我找到了一个新的很棒的库:
dependency' org.java-websocket:Java-WebSocket:1.3.0'
检查我的回答here以找到有关如何使用此lib的更多说明。这个图书馆支持WS,WSS,HEADERS。