【问题标题】:Why does Java's URL class not recognize certain protocols?为什么 Java 的 URL 类不能识别某些协议?
【发布时间】:2011-01-25 06:40:50
【问题描述】:
URL u=new URL("telnet://route-server.exodus.net");

这条线正在生成:

java.net.MalformedURLException: unknown protocol: telnet

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

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

【问题讨论】:

  • 感谢大家,学到了新东西..

标签: java url protocols malformedurlexception


【解决方案1】:

问题

Java 抛出 MalformedURLException,因为它找不到该协议的 URLStreamHandler。详情请查看构造函数的javadocs

总结

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

解决方案

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

【讨论】:

  • 或者,可以实现自己的 URLStreamHandler
  • 非常感谢。 URI 类是我的解决方案。
  • 我还能发送数据(使用 URI)吗?
【解决方案2】:

听起来您的应用程序中没有为“telnet”协议注册的处理程序。由于 URL 类可用于打开到 URL 的 InputStream,因此如果允许您使用它创建对象,则需要为协议注册一个处理程序才能完成这项工作。

有关如何添加处理程序的详细信息,请参阅:http://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html

【讨论】:

    【解决方案3】:

    您收到该错误是因为 java 没有用于 telnet 的标准 protocol handler

    【讨论】:

      【解决方案4】:

      简单的答案是它只确实识别某些协议,而无穷无尽的协议的其余部分则无法识别。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-18
        • 1970-01-01
        • 2018-12-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多