我正在使用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();
然后在随后调用
ClientEndpointConfig
或ClientManager.connectToServer
时使用此ClientManager.asyncConnectToServer
对象。