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