kav*_*i77 11 java websocket java-websocket
我使用javax.websocket类连接到Java中的websocket服务器.
import javax.websocket.DeploymentException;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
import java.io.IOException;
import java.net.URI;
public class WSClient {
private WebSocketContainer webSocketContainer;
public void sendMessage(URI endpointURI, String message) throws IOException, DeploymentException {
Session session = webSocketContainer.connectToServer(MyClientEndpoint.class, endpointURI);
session.getAsyncRemote().sendText(message);
}
}
Run Code Online (Sandbox Code Playgroud)
对于初始HTTP握手,我想在客户端向请求添加额外的HTTP标头
这可能吗?
我知道这可以在服务器端使用ServerEndpointConfig.Configurator.modifyHandshake.客户端是否有类似的解决方案?
Tak*_*aki 10
ClientEndpointConfig.Configurator.beforeRequest(Map<String,List<String>> headers) 可能有用.
关于参数的JavaDoc headers如下:
实现即将发送以开始握手交互的握手请求头的可变映射.
那么,为什么不覆盖beforeRequest下面的方法呢?
@Override
public void beforeRequest(Map<String,List<String>> headers)
{
List<String> values = new ArrayList<String>();
values.add("My Value");
headers.put("X-My-Custom-Header", values);
}
Run Code Online (Sandbox Code Playgroud)
你可以传递ClientEndpointConfig给.connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)
小智 5
public class Config extends ClientEndpointConfig.Configurator{
@Override
public void beforeRequest(Map<String, List<String>> headers) {
headers.put("Pragma", Arrays.asList("no-cache"));
headers.put("Origin", Arrays.asList("https://www.bcex.ca"));
headers.put("Accept-Encoding", Arrays.asList("gzip, deflate, br"));
headers.put("Accept-Language", Arrays.asList("en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4"));
headers.put("User-Agent", Arrays.asList("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"));
headers.put("Upgrade", Arrays.asList("websocket"));
headers.put("Cache-Control", Arrays.asList("no-cache"));
headers.put("Connection", Arrays.asList("Upgrade"));
headers.put("Sec-WebSocket-Version", Arrays.asList("13"));
}
@Override
public void afterResponse(HandshakeResponse hr) {
Map<String, List<String>> headers = hr.getHeaders();
log.info("headers -> "+headers);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8323 次 |
| 最近记录: |