Как разобрать любой URL / URI в Java? - PullRequest
0 голосов
/ 20 февраля 2020

Я ищу способ парсинга URL / URI в Java, не беспокоясь об исключениях для обычных URL. Интегрированный способ Java, который я знаю, использует java.net.URI соответственно java.net.URL.

Каждый из этих классов имеет основные недостатки:

  • java.net.URL не может обрабатывать пользовательские протоколы / Схемы и происходит сбой, поэтому с URL-адресами вроде idontcare://bla.com/test
  • java.net.URI не возникает проблем с пользовательскими протоколами / схемами, но происходит сбой, если, например, часть запроса содержит «недопустимый символ» (специальный символ, который не является URL закодирован). Поэтому он не работает, например, в URL-адресе, таком как https://bla.example.org/css?family=Roboto:300|Roboto:300,400,500,700&lang=de

Существует ли универсальный и не ограниченный (не выдает ошибки для случаев, как указано выше) способ анализа URL-адресов в Java?

1 Ответ

1 голос
/ 20 февраля 2020

Я нашел UriComponents от Spring Framework, способного обрабатывать оба URI:

String uri = ...
UriComponents uriComponents = UriComponentsBuilder.fromUriString(uri).build();

Вы можете проверить код , чтобы увидеть, что он делает.

...