Простой ответ - использовать [java.net.URI][1]
для сравнения URL, а не java.net.URL
. Но это все равно даст вам более или менее буквальное сравнение URI.
Если вы хотите сделать более умную работу по сравнению URI, есть целый раздел спецификации URI на эту тему. Вещи, которые может необходимо учитывать, включают:
- заглавные буквы
<scheme>
и <domain>
- заглавные буквы escape-последовательностей
- номера портов по умолчанию
- ненужные escape-последовательности
- неканонические
<path>
компоненты
- значение URL
<fragment>
и <user-info>
.
Тогда возникает проблема, связанная с тем, что разные URL-адреса могут разрешаться для одного и того же ресурса посредством постоянного или временного перенаправления или просто путем возврата идентичного содержимого. А один URL-адрес может разрешать доступ к разным ресурсам в зависимости от заголовков HTTP-запроса, IP-адреса источника, фазы луны и т. Д.