2011-07-31 2 views
4

Мои требования довольно просты, но мне нужно сделать многое из этого, поэтому я ищу надежное решение.Как разложить URL-адрес на его составные части в Java?

Есть ли хорошая легкая библиотека для разложения URL-адресов в их составные части на Java? Я имею в виду имя хоста, строку запроса и т. Д.

ответ

3

Посмотрите на java.net.URL. У этого есть методы точно, что Вы пытаетесь сделать.

Hostname: getHost()
Строка запроса: getQuery()
Фрагмент/исх/Якорь: 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.URI и java.net.URL не работают для многих современных URL-адресов. java.net.URI придерживается RFC 2396, который действительно старый стандарт. java.net.URL иногда делает хорошую работу, но если вы работаете с URL-адресами, найденными в дикой природе, это не удастся для многих случаев.

Для решения этих проблем я написал galimatias, библиотеку разбора URL-адресов и нормализацию для Java. Он будет работать практически с любым URL-адресом, который вы можете себе представить (в основном, если он работает в веб-браузере, галиматиты будут анализировать его правильно). И он имеет очень удобный API.

Вы можете получить это по: https://github.com/smola/galimatias

Смежные вопросы