我的要求相当简单,但我需要做很多工作,所以我正在寻找一个强大的解决方案。如何在Java中将URL分解为其组成部分?
是否有一个很好的轻量级库用于将URL分解为Java中的组件部分?我指的是主机名,查询字符串等。
我的要求相当简单,但我需要做很多工作,所以我正在寻找一个强大的解决方案。如何在Java中将URL分解为其组成部分?
是否有一个很好的轻量级库用于将URL分解为Java中的组件部分?我指的是主机名,查询字符串等。
看一看java.net.URL。它的方法正是你想要做的。
主机名:getHost()
查询字符串:getQuery()
片段/ REF /锚:getRef()
路径:getPath()
看那URL class的吸气剂的方法。
你有你需要的全部。
URL.getProtocol()
URL.getHost()
URL.getPort()
等等。
我总是忘记URI格式,因此在这里它是:
<scheme>://<userinfo>@<host>:<port><path>#<fragement>
这里一个例子:
URI uri = new URI ("query://[email protected]:9000/public/manuals/appliances?stove#ge");
将发生以下情况:
uri.getAuthority()
将返回"[email protected]:9000"
uri.getFragment()
将返回"ge"
uri.getHost()
将返回"books.com"
uri.getPath()
将返回"/public/manuals/appliances"
uri.getPort()
将返回9000
uri.getQuery()
将返回"stove"
uri.getScheme()
将返回"query"
uri.getSchemeSpecificPart()
将返回"//[email protected]:9000/public/manuals/appliances?stove"
uri.getUserInfo()
将返回"jeff"
uri.isAbsolute()
将返回true
uri.isOpaque()
将返回false
我发现这个博客得心应手:Exploring Java's Network API: URIs and URLs
java.net.URI
和java.net.URL
没有为许多现代网址。 java.net.URI
遵守RFC 2396,这是一个非常古老的标准。 java.net.URL
有时可以做得很好,但是如果您使用的是在野外发现的网址,它在很多情况下都会失败。
为了解决这些问题,我写了一个用于Java的URL解析和规范化库galimatias。它几乎可以处理任何你可以想象的URL(基本上,如果它在网络浏览器中运行,galimatias会正确解析它)。它有非常方便的API。