2013-11-21 211 views
0

我想要一個服務器(用java編寫)重定向到一個HTTPS URL(該URL永遠不會改變)訪問時。如果我有Java HTTPS代理/重定向服務器

java -Djavax.net.ssl.keyStore=mySrvKeystore -Djavax.net.ssl.keyStorePassword=password ProxyServer 

編譯代碼和地址,端口輸入,並且將localPort作爲

https://google.com 443 5000 

並嘗試我的機器上訪問

localhost:5000 

,然後我得到的錯誤

java.net.UnknownHostException: https://google.com 

調試後ging,當我嘗試創建SSLSocket(secureServer)時,我非常肯定它會在此代碼塊中中斷。

SSLSocket secureServer; 
    try { 
     SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault(); 
     secureServer = (SSLSocket) factory.createSocket(host, port); 
     from_server = secureServer.getInputStream(); 
     to_server = secureServer.getOutputStream(); 
    } 

回答

1

您作爲主機傳遞給factory.createSocket(host,port)的參數不能具有預先設置的協議。它應該簡單地是google.com

原因是Java將採用該參數並將其作爲輸入傳遞給DNS查找。如果您要在命令行上鍵入host https://google.com,則會出現類似的失敗。

+0

謝謝!讓它連接套接字和流,但由於某種原因,它不顯示網站,並開始下載一個空文件...時間更多的調試。 – sko

+0

@sko很高興聽到它!如果我的回答對你有幫助,請考慮接受它......這樣做有助於激勵人們不斷回答問題。 :) – stevevls

+0

更多:不要使用IP地址。看到j​​ava bug:https://bugs.openjdk.java.net/browse/JDK-8133196 –

相關問題