java - 使用 HttpURLConnection 的 HTTPS 网站

标签 java android https httpurlconnection httpsurlconnection

我有一个关于将 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 连接,则不会导致类转换异常。您仍然可以转换为 HttpsUrlConnection - 出于安全考虑,您可以使用 instanceof 检查 url 方案是否应该更改。

关于java - 使用 HttpURLConnection 的 HTTPS 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35025144/

相关文章:

java - 重复类 org.apache.commons.logging

android - 生成期间输出versionName属性

node.js - 来自 Socket.io 的 s3_pkt.c 中的 HTTPS 错误 "data length too long"

java - Spark 还是传统的守护进程来处理流更新?

java - 使用 dx.bat 时错误的类文件魔术

java - 尝试通过远程计算机连接到数据库时 SQL 服务器连接被拒绝

Java:从 block 中的数组列表创建数组的有效方法

JAVA JSONObject 与准备好的数据

apache - 使用 https 保护 webcal 订阅

ssl - IIS 将 HTTP 重定向到 HTTPS 重定向循环