Обратите внимание, что даже при подходах, предложенных в других ответах, вы не получите правильное подтверждение, так как java.net.URI
соответствует RFC 2396, который заметно устарел.Используя java.net.URI
, вы получите исключения для URL-адресов, которые сегодня действительны для всех веб-браузеров.
Чтобы решить эти проблемы, я написал библиотеку для анализа URL-адресов в Java: galimatias .Он выполняет синтаксический анализ URL так же, как и веб-браузеры (придерживаясь спецификации WHATWG ).
В вашем случае вы можете написать:
try {
URL url = io.mola.galimatias.URL.parse(url).toJavaURL();
} catch (GalimatiasParseException e) {
// If this exception is thrown, the given URL contains a unrecoverable error. That is, it's completely invalid.
}
Какхороший побочный эффект, вы получаете много санитарной обработки, которую вы не получите с java.net.URI
.Например, http:/example.com
будет правильно проанализирован как http://example.com/
.