我正在创建一个处理HTTP连接的类,我想处理HTTP和HTTPS,但是使用相同的变量(所以我可以使用相同的代码来发送数据等).目前,我的代码看起来像这样:
if (ssl)
{
conn = (HttpsURLConnection) new URL(...).openConnection();
conn.setHostnameVerifier(...);
}
else
{
conn = (HttpURLConnection) new URL(...).openConnection();
}
Run Code Online (Sandbox Code Playgroud)
当"conn"的类型为HttpsURLConnection时,HttpURLConnection强制转换失败.当"conn"类型为HttpURLConnection或URLConnection时,"setHostnameVerifier"和其他HTTPS相关方法不可访问.
鉴于HttpsURLConnection是HttpURLConnection类的子类,我认为它会起作用,但我显然是错的.有没有办法使这个代码工作,以便我可以在需要时访问HTTPS方法?
只要保持conn一个URLConnection创造在一个更具体的本地参考if块.
URLConnection conn;
// ...
conn = new URL(...).openConnection();
// ...
if (conn instanceof HttpsURLConnection) {
HttpsURLConnection httpsConn = (HttpsURLConnection) conn;
httpsConn.setHostnameVerifier(...);
}
// ...
Run Code Online (Sandbox Code Playgroud)
要不就
// ...
if (conn instanceof HttpsURLConnection) {
((HttpsURLConnection) conn).setHostnameVerifier(...);
}
// ...
Run Code Online (Sandbox Code Playgroud)
请记住,在Java中,您处理的是引用,而不是值.所以这里没有创建副本.
| 归档时间: |
|
| 查看次数: |
6469 次 |
| 最近记录: |