我在高速公路websocket中使用wss时无法进行通信,为什么?

时间:2016-03-09 07:05:44

标签: android ssl websocket autobahn

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

1 个答案:

答案 0 :(得分:0)

我有同样的问题所以我找到了一个新的很棒的库:

  

dependency' org.java-websocket:Java-WebSocket:1.3.0'

检查我的回答here以找到有关如何使用此lib的更多说明。这个图书馆支持WS,WSS,HEADERS。