2015-06-29 21 views
6

javax.websocket sınıflarını kullanarak Java'da bir websocket sunucusuna bağlanıyorum. Ben İstemci tarafındaJava Websocket istemcisindeki başlıklar nasıl eklenir

bu mümkün mü Talep ekstra HTTP Başlıkları eklemek istediğiniz ilk HTTP el sıkışma için

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); 
    } 
} 

?

Bunun sunucu tarafında kullanarak mümkün olduğunu biliyorum. Müşteri tarafında benzer bir çözüm var mı?

cevap

8

ClientEndpointConfig . Configurator . beforeRequest (Map<String,List<String>> headers) kullanılabilir. aşağıdaki gibi

argüman headers hakkında javadoc diyor:

tokalaşma isteği değişken harita uygulaması tokalaşma etkileşimi başlatmak için göndermek üzere olduğunu başlıklarını.

Öyleyse neden aşağıda gibi beforeRequest yöntemini geçersiz kılmaz?

@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); 
} 

Sen connectToServer (Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path) için ClientEndpointConfig geçebilir.

0
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); 
    } 
}