我正在尝试检查天气我的jboss服务器是否正常或只是url可以访问。我使用responseCode即200
表示确定。我可以为HTTP做,但HTTPS失败。
所以我想要HTTPS的responseCode。
我正在使用以下代码
HttpURLConnection urlCon = null;
URL url = new URL("http://localhost:8080/abc");
urlCon = (HttpURLConnection) url.openConnection();
System.out.println(urlCon.getResponseCode());
if(urlCon.getResponseCode() == 200)
{
System.out.println("Server is up");
}
适用于HTTP
但是当我为HTTPS
尝试相同时它会给出连接拒绝或SSLhandshakeException
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:882)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1215)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1199)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1195)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:318)
at com.de.base.tools.Sample.main(Sample.java:23)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:462)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:863)
... 9 more
我已尝试HttpURLConnection
到HttpsURLConnection
,但提供相同的
任何人都知道如何获得responceCode()
HTTPS
感谢。
答案 0 :(得分:1)
我认为自签名证书存在问题,而这些证书不在您的信任存储区中。
您可以使用以下命令运行客户端时检查它:
-Djavax.net.debug=ssl
它为ssl启用调试,您将获得更好的错误输出。
如果要修复自签名证书的问题,则必须将其添加到受信任的Java密钥库。
我认为this问题是你的答案。