java中的HTTPS和HTTP连接

问题描述 投票:0回答:2

我知道 HTTPS 扩展了 http。那么这是否意味着我可以做到这一点?

HttpUrlConnection connect = passmyurl.openconnection(url);

HttpsUrlConnection connect = passmyurl.openconnection(url);



public static HttpsURLConnection passmyurl(URL url) throws IOException {
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        return connection;
    }

这是否意味着两者都有效?由于HTTPps扩展了HTTP,这意味着我也可以将HTTP url传递给这个函数?

java http url httpurlconnection
2个回答
5
投票

在您的代码中:

public static HttpsURLConnection passmyurl(URL url) throws IOException {
    HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
    return connection;
}

您应该将返回类型

HttpsURLConnection
更改为
URLConnection
。因为
url.openConnection()
结果类型是
URLConnection
的子类型,而具体类型取决于参数
url
的协议。
openConnection()的实现文档
URL
班:

If for the URL's protocol (such as HTTP or JAR), there exists a public, specialized URLConnection subclass belonging to one of the following packages or one of their subpackages: java.lang, java.io, java.util, java.net, the connection returned will be of that subclass. For example, for HTTP an HttpURLConnection will be returned, and for JAR a JarURLConnection will be returned.

因此您可以将

Http
url 或
Https
url 传递给您的方法。

参见以下代码:

    URLConnection httpConnection = new URL("http://test").openConnection();
    System.out.println(httpConnection.getClass());
    URLConnection httpsConnection = new URL("https://test").openConnection();
    System.out.println(httpsConnection.getClass());
    URLConnection ftpConnection = new URL("ftp://test").openConnection();
    System.out.println(ftpConnection.getClass());`

打印的是:

class sun.net.www.protocol.http.HttpURLConnection
class sun.net.www.protocol.https.HttpsURLConnectionImpl
class sun.net.www.protocol.ftp.FtpURLConnection

-1
投票

我们也有同样的问题,答案就在这个网页,希望你能使用。 https://chuidiang.org/index.php?title=Lectura_http_y_https_desde_java

© www.soinside.com 2019 - 2024. All rights reserved.