我正在测试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/