2015-06-29 11 views
6

में हेडर जोड़ने के लिए कैसे मैं javax.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); 
    } 
} 

प्रारंभिक HTTP हाथ मिलाना मैं क्लाइंट साइड

यह संभव है पर अनुरोध करने के लिए अतिरिक्त HTTP हेडर जोड़ना चाहते हैं?

मुझे पता है कि का उपयोग कर सर्वर पक्ष पर यह संभव है। क्या ग्राहक पक्ष पर एक समान समाधान है?

उत्तर

8

ClientEndpointConfig . Configurator . beforeRequest (Map<String,List<String>> headers) उपयोग योग्य हो सकता है।

तर्क headers के बारे में JavaDoc इस प्रकार कहते हैं:

हाथ मिलाना अनुरोध के परिवर्तनशील नक्शा हेडर कार्यान्वयन हाथ मिलाना बातचीत शुरू करने के लिए भेजने के लिए के बारे में है।

तो, आप 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); 
} 

आप connectToServer (Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path) करने के लिए ClientEndpointConfig पारित कर सकते हैं।

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); 
    } 
} 
संबंधित मुद्दे