我正在使用HttpURLConnection请求服务器。之前服务器使用的是http only protocolhttps协议,现在使用的是https协议。
我的问题是我没有使用HttpsURLConnection我的代码仍然工作正常,当我没有添加证书仍然工作时怎么可能。
下面是我的代码
//url is https://.......
URL m_url = new URL(p_url);
m_httpConnection = (HttpURLConnection) m_url.openConnection();
m_httpConnection.setConnectTimeout(CONNECTION_TIMEOUT);
m_httpConnection.setReadTimeout(READ_TIMEOUT);
System.setProperty("http.keepAlive", "false");
m_httpConnection.setUseCaches(false);
m_httpConnection.setDoOutput(p_isDoOutput);
if (p_contentType != null)
{
m_httpConnection.setRequestProperty("content-type", p_contentType);
}
m_httpConnection.setRequestProperty("Accept-Encoding", "gzip,deflate,sdch");
Run Code Online (Sandbox Code Playgroud)
HttpsURLConnectionextends HttpURLConnection,并且您的连接是两者的实例。当您调用openConnection()该函数时,实际上返回一个HttpsURLConnection. 但是,由于 https 对象扩展了 http 对象,因此您的连接仍然是HttpURLConnection. 这就是你的演员阵容发挥作用的原因。您也可以将连接强制转换为HttpsURLConnection无问题。
基本上是这样想的。openConnection()返回一个URLConnection不支持 HTTP 协议的对象。然而,正如您在代码中似乎意识到的那样,这URLConnection实际上是HttpURLConnection支持 HTTP 协议的。从同样的意义上说,您HttpURLConnection实际上是HttpsURLConnection支持 SSL/TLS 的。
| 归档时间: |
|
| 查看次数: |
7233 次 |
| 最近记录: |