2017年5月7日 星期日

Java:javax.net.ssl.SSLHandshakeException 錯誤

在Java裡可以透過建立HttpURLConnection與HttpClient物件來實作HTTP的連線方法,但是可能會出現javax.net.ssl.SSLHandshakeException 錯誤。


解決方法:

如果使用HttpURLConnection出現上述錯誤,請把網址https://裡的s拿掉,變成http://就可以了。

那如果使用HttpClient的話,要使用https的話,需要自行載入ssl key程式碼如下:


       KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType()); 
        FileInputStream instream = new FileInputStream(new File("my.keystore")); 
        try { 
            trustStore.load(instream, "nopassword".toCharArray()); 
        } finally { 
            try { instream.close(); } catch (Exception ignore) {} 
        } 
        SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore); 
        Scheme sch = new Scheme("https", 443, socketFactory); 
        httpclient.getConnectionManager().getSchemeRegistry().register(sch); 

其中my.keystore就是需要載入的憑證檔案。

沒有留言:

張貼留言