Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用身份验证cookie打开WebSocket连接_Java_Android_Cookies_Header_Websocket - Fatal编程技术网

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

Java 使用身份验证cookie打开WebSocket连接,java,android,cookies,header,websocket,Java,Android,Cookies,Header,Websocket,我有同样的问题,我一直在努力解决,正如第一条评论所建议的那样 WebSocketClient(URI服务器URI、草稿协议草稿、映射httpHeaders、int连接超时) 使用,以及查看许多其他API,如Jetty和。但尽管如此,我无法打开websocket连接 我有一个,需要这个来用WebSocket向服务器验证我自己。将cookie转换为httpHeader的正确方法是什么,或者在连接到websocket时,是否有简单的方法将整个cookie添加到身份验证中?也许我只是错过了显而易见的 对

我有同样的问题,我一直在努力解决,正如第一条评论所建议的那样

WebSocketClient(URI服务器URI、草稿协议草稿、映射httpHeaders、int连接超时)

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

我有一个,需要这个来用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();
使用WebSockeTorClient:

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();
    }
}
私有类WebSocketOrderClient扩展WebSocketClient{
公共WebSocketOrderClient(URI服务器URI、草稿、映射头、int超时){
超级(服务器URI、草稿、标题、超时);
}
@凌驾
公共打开(服务器握手握手数据){
Log.w(“已连接”、“真实”);
}
@凌驾
公共消息无效(字符串消息){
Log.w(“got:,message”);
}
@凌驾
公共void onClose(int代码、字符串原因、布尔远程){
Log.w(“断开连接”,“代码+”);
}
@凌驾
公共无效申报人(例外情况除外){
例如printStackTrace();
}
}
希望这对将来可能遇到这个问题的人有所帮助