使用 HttpURLConnection 的 HTTPS 网站

Https Website using HttpURLConnection

我有关于将 HttpUrlConnection 与 https 网络服务一起使用的问题。

基本上,我们之前编写了一堆要在 Android 应用程序中使用的 Web 服务,这些服务都是 http 调用。我们想将它们改成使用 https。基本上,我关心的是我现有的代码能否正常工作?我之前创建了如下连接:

HttpURLConnection myConnection = (HttpURLConnection) myURL.openConnection();
myConnection.setConnectTimeout(TIMEOUT_MILLISEC);
myConnection.connect();

这似乎适用于新的 https 网络服务,但我想知道为什么我不需要将其更改为这样的内容:

HttpsURLConnection myConnection = (HttpsURLConnection) myURL.openConnection();
myConnection.setConnectTimeout(TIMEOUT_MILLISEC);
myConnection.setSSLSocketFactory(createSSLSocketFactory());
myConnection.connect();

我仍然计划改用 HttpsURLConnection,但我很好奇我们的应用程序的旧版本将如何受到我们预期更改的影响。

感谢您的帮助!

HttpUrlConnection 的文档中,您会发现:

Calling openConnection() on a URL with the "https" scheme will return an HttpsURLConnection

但是由于 HttpsUrlConnection 是从 HttpUrlConnection 扩展而来的,所以这段代码:

HttpURLConnection myConnection = (HttpURLConnection) myURL.openConnection();
如果 url 用于 https 连接,

将不会导致 class 转换异常。您仍然可以转换为 HttpsUrlConnection - 为了安全起见,您可以使用 instanceof 检查 url 方案是否应该更改。