我有这个代码:
URL url = new URL(urlStr)
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
并且工作正常,直到我更新到最新的 spring/库版本。之后,它向我展示了这个构造函数 new URL(String url) 在
URI.toURL()
的风格中被弃用,以构造 URL
的实例。我将代码重写为:
Path path = Paths.get(urlStr);
URI uri = path.toUri();
HttpsURLConnection con = (HttpsURLConnection) uri.toURL().openConnection();
但是它正在抛出:
java.lang.ClassCastException: class sun.net.www.protocol.file.fileurlconnection cannot be cast to class javax.net.ssl.HttpsURLConnection (sun.net.www.protocol.file.fileurlconnection and javax.net.ssl.HttpsURLConnection are in module java.base of loader 'bootstrap')
所以现在我正在寻找如何重写它以使其再次工作。
Javadoc 弃用通知显示“有关更多详细信息,请参阅有关构造函数弃用的注释”。该注释说您可以像这样创建 URL:
URL url = URI.create(urlStr).toURL();
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
这是可行的,因为每个 URL 都是一个 URI。因此,您可以将 URL 字符串传递给 URI 构造函数(或传递给
create()
便捷方法)。