2011-07-31 39 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