java - 为什么 Java 的 URL 类不能识别某些协议(protocol)?

标签 java url protocols malformedurlexception

URL u=new URL("telnet://route-server.exodus.net");

这条线正在生成:

java.net.MalformedURLException: unknown protocol: telnet

我在使用其他以“news://”开头的 URL 时也遇到了类似的问题

这些是从 ODP 中提取的 URL,所以我不明白为什么会出现这种异常..

最佳答案

问题

Java 抛出 MalformedURLException 因为它找不到该协议(protocol)的 URLStreamHandler。查看javadocs详细的构造函数。

总结

由于 URL 类具有 openConnection 方法,因此 URL 类会检查以确保 Java 知道如何打开正确协议(protocol)的连接。如果没有该协议(protocol)的 URLStreamHandler,Java 拒绝创建 URL 以在您尝试调用 openConnection 时避免失败。

解决方案

您可能应该使用 URI如果您不打算在 Java 中打开这些协议(protocol)的连接,请使用类。

关于java - 为什么 Java 的 URL 类不能识别某些协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2406518/

相关文章:

url - 你如何看待 ColdFusion 中的客户端 URL?

objective-c - 无法分配 self.delegate 它会产生无法识别的选择器发送

swift - 如何使用私有(private)集扩展协议(protocol)?

ios - 有没有比手动 po 每个变量更好的方法来检查协议(protocol)中 swift 对象的属性?

java - 数据库 'default' 需要进化!当尝试使用 play Framework 2.7.0 和 Ebean 连接到 MySQL 时

java - 将 JTextField 添加到 JToolBar

Java 对数 log(num, base)(已关闭)

Java泛型方法通过使用类型开关获取类型值

python - 在 Python 中发送带有片段标识符的 GET 请求

javascript - 通过纯 javascript 执行此操作的更好方法