Ada*_*umb 13 java urlconnection
我正在开发一个项目,我正在创建一个类来运行http客户端请求(我的类充当客户端).它接受一个url和一个请求方法(GET,POST,PUT等),我希望能够解析URL并根据它是https还是http打开一个HttpsURLConnection或HttpURLConnection(假设给定的URL始终是正确).
如果我执行以下操作:
URLConnection conn = url.openConnection();
Run Code Online (Sandbox Code Playgroud)
然后,这将自动创建一个可以接受http和https的URLConnection,但如果我这样做,那么我找不到任何方法来设置请求方法(GET,POST等),因为只有HttpsURLConnection或HttpURLConnection类才有setRequestMethod方法.
如果我执行以下操作:
if(is_https)
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
else
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
Run Code Online (Sandbox Code Playgroud)
然后创建连接,但我无法在if块之外访问它们.
是否可以这样做,或者我应该放弃并使用apache httpclient类?
Rob*_*rco 32
HttpsURLConnection扩展了HttpUrlConnection,所以你不需要HttpsUrlConnection,你可以做
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
Run Code Online (Sandbox Code Playgroud)
dfa*_*dfa 22
因为HttpsURLConnection extends HttpURLConnection你可以声明conn为HttpsURLConnection.通过这种方式,您可以访问公共接口(setRequestMethod()).
要访问扩展方法(例如getCipherSuite(),仅在子类中定义HttpsURLConnection),必须在instanceof之后使用强制转换:
if (conn instanceof HttpsURLConnection) {
HttpsURLConnection secured = (HttpsURLConnection) conn;
String cipher = secured.getCipherSuite();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42841 次 |
| 最近记录: |