我正在使用tyrus客户机包从我的java应用程序中使用一个websocket端点,该端点在初始客户机请求中需要一个cookie头。翻阅Tyrus客户端API文档和谷歌搜索并没有让我走得太远。你知道怎么做吗?

最佳答案

找到了解决我自己问题的方法,所以我想和大家分享一下。解决方案是在clientendpointconfig上设置一个自定义配置程序,并重写该配置程序中的beforerequest方法以添加cookie头。
例如:

ClientEndpointConfig cec = ClientEndpointConfig.Builder.create()
    .configurator(new ClientEndpointConfig.Configurator() {
        @Override
        public void beforeRequest(Map<String, List<String>> headers) {
            super.beforeRequest(headers);
            List<String> cookieList = headers.get("Cookie");
            if (null == cookieList) {
                cookieList = new ArrayList<>();
            }
            cookieList.add("foo=\"bar\"");     // set your cookie value here
            headers.put("Cookie", cookieList);
        }
    }).build();

然后在随后调用ClientEndpointConfigClientManager.connectToServer时使用此ClientManager.asyncConnectToServer对象。

09-28 00:23