我正在尝试在访问时将服务器(用java编写)重定向到HTTPS网址(网址永远不会更改)。如果我用
编译代码java -Djavax.net.ssl.keyStore=mySrvKeystore -Djavax.net.ssl.keyStorePassword=password ProxyServer
并输入地址,端口和本地端口
https://google.com 443 5000
尝试访问
localhost:5000
在我的机器上,然后我收到错误
java.net.UnknownHostException: https://google.com
调试之后,我很确定当我尝试创建SSLSocket(secureServer)时,它会在此代码块中中断。
SSLSocket secureServer;
try {
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
secureServer = (SSLSocket) factory.createSocket(host, port);
from_server = secureServer.getInputStream();
to_server = secureServer.getOutputStream();
}
答案 0 :(得分:1)
作为主持人传递给factory.createSocket(host,port)
的参数必须没有前面的协议。它应该只是google.com
。
原因是Java将采用host
参数并将其作为输入传递给DNS查找。如果您在命令行中键入host https://google.com
,则会出现类似的失败。
答案 1 :(得分:0)
在here中,它表示这是一个错误,并且在发布某些版本后已解决
在jdk 6服务器中,我们得到相同的异常,但是在我们的jdk 8服务器中,没有异常