2011-07-31 40 views
4

我的要求相当简单,但我需要做很多工作,所以我正在寻找一个强大的解决方案。如何在Java中将URL分解为其组成部分?

是否有一个很好的轻量级库用于将URL分解为Java中的组件部分?我指的是主机名,查询字符串等。

回答

3

看一看java.net.URL。它的方法正是你想要做的。

主机名:getHost()
查询字符串:getQuery()
片段/ REF /锚:getRef()
路径:getPath()

0

看那URL class的吸气剂的方法。

你有你需要的全部。

0
URL.getProtocol() 
URL.getHost() 
URL.getPort() 

等等。

5

我总是忘记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

1

java.net.URIjava.net.URL没有为许多现代网址。 java.net.URI遵守RFC 2396,这是一个非常古老的标准。 java.net.URL有时可以做得很好,但是如果您使用的是在野外发现的网址,它在很多情况下都会失败。

为了解决这些问题,我写了一个用于Java的URL解析和规范化库galimatias。它几乎可以处理任何你可以想象的URL(基本上,如果它在网络浏览器中运行,galimatias会正确解析它)。它有非常方便的API。

您可以从:https://github.com/smola/galimatias