获取HTTPS连接的响应代码

时间:2016-07-18 10:05:23

标签: java ssl https urlconnection

我正在尝试检查天气我的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

我已尝试HttpURLConnectionHttpsURLConnection,但提供相同的

任何人都知道如何获得responceCode()

HTTPS

感谢。

1 个答案:

答案 0 :(得分:1)

我认为自签名证书存在问题,而这些证书不在您的信任存储区中。 您可以使用以下命令运行客户端时检查它: -Djavax.net.debug=ssl 它为ssl启用调试,您将获得更好的错误输出。 如果要修复自签名证书的问题,则必须将其添加到受信任的Java密钥库。 我认为this问题是你的答案。