2013-11-21 166 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 –

相关问题