我的要求相當簡單,但我需要做很多工作,所以我正在尋找一個強大的解決方案。如何在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。