这是我的第一篇文章。我已经看到了这个问题的一些答案 - Jetty 8.1.1 Websocket client handshake 但使用类似的解决方案并没有帮助我。客户端连接到服务器并发送消息,但在服务器端,服务器未验证客户端(无效令牌),即使我发送正确的令牌也很困难。我无法理解我所缺少的东西。 Javascript中的相同内容正在发挥作用,但我必须在Java中实现它。
这是我的示例客户端代码。任何帮助将不胜感激。谢谢!
public class JettyWebSocketClient {
public static void main(String[] args) throws Exception {
JettyWebSocketClient app = new JettyWebSocketClient();
app.test();
}
public void test() throws Exception {
ClientUpgradeRequest request = new ClientUpgradeRequest();
request.setHeader("Authorization", "xyz==");
WebSocketClient client = new WebSocketClient(new SslContextFactory());
MyWebSocket socket = new MyWebSocket();
client.start();
URI destUri = new URI("wss://xyz.com:4443/ws");
System.out.println("Connecting to " + destUri);
client.connect(socket, destUri, request);
socket.awaitClose(20, TimeUnit.SECONDS);
client.stop();
}
}
答案 0 :(得分:1)
如果服务器需要Basic Authentication,则Authorization
标头的值必须以“基本”开头。
尝试更改
request.setHeader("Authorization", "xyz==");
到
request.setHeader("Authorization", "Basic xyz==");