2014-11-20 3 views
2

을 설정 나는이 라이브러리를 사용하고 - 나는 보안 WebSocket을을 사용하고 WebSocketClient에서 HTTP 쿠키를 전달하는 데 노력하고 Java-WebSocket자바 WebSocketClient는 쿠키 헤더

을 :

HashMap<String, String> header = new HashMap<String, String>(); 
header =this.sessionCookie;//session cookie is obtained from https authentication 
new WebSocketClient(new URI(serverURL), new Draft_17(), header); //server url is wss://xyzsomething:1100 

을하지만이 될 것 같지 않습니다 작동 중 (연결 실패). 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까? websocketclient에서 바로 쿠키를 설정하지 않습니까?

+0

'this.sessionCookie'는 Hashmap입니까? 어디서 구 했니? 당신이 기입하는 열쇠는 무엇입니까? – MOnsDaR

답변

0

그래서 내 소켓의 문제는 서버와 인증서를 교환해야한다는 것이 었습니다. 웹 소켓을 열기 전에 다음 함수를 실행해야했습니다 :

private void trustServer() throws KeyManagementException, NoSuchAlgorithmException { 
    // Create a trust manager that does not validate certificate chains 
    TrustManager[] certs = new TrustManager[]{ new X509TrustManager() { 
     public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
      return new java.security.cert.X509Certificate[]{}; 
     } 
     public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {} 
     public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException{ } 
    }}; 
    SSLContext sslContext = null; 
    sslContext = SSLContext.getInstance("TLS"); 
    sslContext.init(null, certs, new java.security.SecureRandom()); 
    this.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sslContext)); 
}