我正在测试javax.net.ssl.HttpsURLConnection。因为程序正在发出HTTPS请求,所以我认为我必须执行setSSLSocketFactory才能使请求正常工作。

但没有setSSLSocketFactory设置,程序可以正常运行:

这是我的代码:

public class HttpsTest {

    public static void main(String[] args) {

        try {

            URL requestUrl = new URL("https://www.google.com/?gws_rd=ssl");
            HttpsURLConnection conn = (HttpsURLConnection) requestUrl.openConnection();

            // conn.setSSLSocketFactory(sslSocketFactory);

            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

            System.out.println("getResponseCode: " + conn.getResponseCode());

            br.close();
            conn.disconnect();

        } catch (Exception ex) {
            ex.printStackTrace();
        }

        // RESULT:

        // Some HTML return by https://www.google.com/?gws_rd=ssl
        // getResponseCode: 200 OK
    }
}


我对Https有什么误解?为什么程序没有sslSocketFactory设置就可以工作? (HttpsURLConnection需要sslSocketFactory来验证服务器发送的SSL / TLS公共证书)

谢谢!

最佳答案

我以为必须执行请求才能执行setSSLSocketFactory()


你不知道它具有默认值。

关于java - 不设置setSSLSocketFactory即可成功成功执行Java HttpsURLConnection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35854166/

10-10 18:51