java - 使用身份验证 cookie 打开 WebSocket 连接

标签 java android cookies header websocket

我有与 Websockets and cookies in Android 相同的问题,我一直在尝试按照第一条评论的建议解决它,

WebSocketClient( URI serverUri , Draft protocolDraft , Map httpHeaders , int connectTimeout)

使用 Java-WebSocket ,以及查看许多其他 API,例如 Jetty 和 AndroidAsync 。但尽管如此,我还是无法打开 websocket 连接。

我有一个Apache http cookie ,并需要使用 WebSocket 向服务器验证我自己的身份。将 cookie 转换为 httpHeader 的正确方法是什么,或者有什么巧妙的方法可以在连接到 websocket 时简单地将整个 cookie 添加到身份验证中?也许我只是错过了显而易见的事情..

对于可能的术语误用,我们深表歉意,但我希望您能了解总体思路。

任何帮助将不胜感激,谢谢!

最佳答案

所以我实际上设法解决了这个问题,结果发现实际问题不是 cookie,而是 websocket 没有使用有效的 sslcontext 进行初始化。这个问题很容易解决:

WebSocketOrderClient webSocketOrderClient = new WebSocketOrderClient(uri, new Draft_17(), cmap, TIMEOUT);
SSLContext sslContext = null;
sslContext = SSLContext.getInstance( "TLS" );
sslContext.init( null, null, null ); // will use java's default key and trust store which is sufficient unless you deal with self-signed certificates

webSocketOrderClient.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sslContext));
webSocketOrderClient.connectBlocking();

使用 WebSocketOrderClient:

private class WebSocketOrderClient extends WebSocketClient {
    public WebSocketOrderClient( URI serverUri, Draft draft, Map<String, String> headers, int timeout) {
        super( serverUri, draft, headers, timeout );
    }
    @Override
    public void onOpen( ServerHandshake handshakedata ) {
        Log.w("connected", "true");
    }
    @Override
    public void onMessage( String message ) {
        Log.w( "got: ", message );
    }
    @Override
    public void onClose( int code, String reason, boolean remote ) {
        Log.w( "Disconnected", ""+code  );
    }
    @Override
    public void onError( Exception ex ) {
        ex.printStackTrace();
    }
}

希望这对将来可能遇到此问题的任何人有所帮助。

关于java - 使用身份验证 cookie 打开 WebSocket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27166258/

相关文章:

java - 使用 open csv 时从 csv 中删除双引号

android - Android 支持设计库中的崩溃

安卓 : How can i settag for the images which are in gridview?

javascript - 文件输入ionic 3 android中触发点击事件

javascript - 使用表单输入设置 cookie

javascript - 我可以在 JavaScript 中限制数组的长度吗?

cookies - 使用带有 cookie 的 Spring Security 3

java - 验证规则发生错误

java - TableView - 编辑焦点单元格

java - 将值添加到 JSONArray 时如何保持值的顺序?