gpt4 book ai didi

java - 在同一变量中同时支持 HttpURLConnection 和 HttpsURLConnection?

转载 作者:可可西里 更新时间:2023-11-01 16:04:45 24 4
gpt4 key购买 nike

我正在创建一个处理 HTTP 连接的类,我想同时处理 HTTP 和 HTTPS,但使用相同的变量(这样我就可以使用相同的代码发送数据等)。目前,我的代码看起来像像这样:

if (ssl)
{
conn = (HttpsURLConnection) new URL(...).openConnection();
conn.setHostnameVerifier(...);
}
else
{
conn = (HttpURLConnection) new URL(...).openConnection();
}

当“conn”是 HttpsURLConnection 类型时,HttpURLConnection 转换失败。当“conn”是 HttpURLConnection 或 URLConnection 类型时,“setHostnameVerifier”和其他 HTTPS 相关方法将不可访问。

鉴于 HttpsURLConnection 是 HttpURLConnection 类的子类,我原以为转换它会起作用,但我显然错了。有什么方法可以使此代码正常工作,以便我可以在需要时访问 HTTPS 方法?

最佳答案

只需将 conn 保留为 URLConnection 并在 if block 中创建更具体的本地引用。

URLConnection conn;

// ...

conn = new URL(...).openConnection();

// ...

if (conn instanceof HttpsURLConnection) {
HttpsURLConnection httpsConn = (HttpsURLConnection) conn;
httpsConn.setHostnameVerifier(...);
}

// ...

或者只是

// ...

if (conn instanceof HttpsURLConnection) {
((HttpsURLConnection) conn).setHostnameVerifier(...);
}

// ...

请记住,在 Java 中,您处理的是引用,而不是值。所以这里没有创建副本。

关于java - 在同一变量中同时支持 HttpURLConnection 和 HttpsURLConnection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11763152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com