如果协议不是http或https,如何解析URL?

时间:2015-10-26 10:35:22

标签: java url

我的问题是如何解析协议不同的网址?

String str = "olqmeeting://192.168.43.55/uam/meeting/meeting.php?id=A72U5AF9";
URL url = new URL(str);

2 个答案:

答案 0 :(得分:1)

您可以使用URI类来解析这些网址。它可以工作......虽然你只能在URL上进行文本操作。

如果您希望URL能够工作(并且能够“连接”到资源),那么您需要实现并配置一个URLStreamHandlerFactory(最低限度地)了解URL的协议以及如何处理它。

(如果在创建URLStreamHandlerFactory对象时没有显式提供非空URL,构造函数将尝试查找URL协议的默认值。如果不能这样做,你得到一个MalformedURLException。)

答案 1 :(得分:0)

URL有其他构造函数,您可以在其中定义协议

URL(String protocol, String host, int port, String file)
Creates a URL object from the specified protocol, host, port number, and file.
URL(String protocol, String host, int port, String file, URLStreamHandler handler)
Creates a URL object from the specified protocol, host, port number, file, and handler.
URL(String protocol, String host, String file)
Creates a URL from the specified protocol name, host name, and file name.

最终您甚至可以使用.set()方法,但它受到保护,因此您需要实现新的自定义网址类