Почему конструктор URL не позволяет относительный URL? - PullRequest
0 голосов
/ 07 января 2019

Конструктор URL не допускает отсутствующий или неизвестный протокол.

Но это не поддерживает широко используемые относительные URL, такие как

  1. Корневой URL-адрес <img src="/images/pic.png>
  2. Страница / Базовый относительный URL <img src="images/pic.png>

Почему конструкторы URL выдают java.net.MalformedURLException: no protocol в этих очень распространенных случаях?

Конструктор URI поддерживает такие относительные URL.

Кстати, правильно ли говорить «относительный URI» вместо «относительный URL»? Поскольку 99% всех ссылок в Интернете - это «относительный URL», а не «относительный URI»

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Почему URL конструкторы выбрасывают java.net.MalformedURLException: нет протокола в этих очень распространенных случаях?

Потому что это недействительные URL.

Конструктор URI поддерживает такие относительные URL.

Неправильно. Это позволяет относительные URI с.

Кстати, правильно ли говорить «относительный URI» вместо «относительный URL»? Потому что 99% всех ссылок в Интернете - это «относительный URL», а не «относительный URI».

Нет. Это не правильно 1 .

Спецификации для URI и URL дают понять, что «относительный URL» не является допустимой терминологией. См https://tools.ietf.org/html/rfc3986

Разработчики API-интерфейсов Java для URI и URL решили (мудро ИМО) правильно использовать терминологию; то есть согласно соответствующим спецификациям. Вот почему конструктор URL не будет принимать относительную строку URI в качестве аргумента.


1 - Не более правильно, чем правильно называть муравьев "жуками". Истинными жуками являются Hemiptera, который является отрядом насекомых (насекомых), который отличается наличием сосущих частей рта. Муравьи являются членами ордена перепончатокрылых. Как гласит Википедия: «Многие насекомые, обычно известные как« жуки », принадлежат к другим отрядам; например, любовный клоп - это муха, а майский жук и божья коровка - жуки». (см. Википедия ) Моя точка зрения? Если бы разработчики Java злоупотребляли различием URL / URI, они были бы такими же плохими, как биолог, который называл муравьев «ошибками» в научной статье.

0 голосов
/ 07 января 2019

URL состоит из разных частей, таких как протокол, хост и ресурс, присутствующий на этом хосте.

Относительный URI не содержит всю информацию для создания URL, поэтому он генерирует исключение java.net.MalformedURLException.

0 голосов
/ 07 января 2019

Почему конструкторы URL выдают java.net.MalformedURLException: нет протокол в этих очень распространенных случаях?

Согласно документации :

Брошенный, чтобы указать, что произошел неправильный URL. Либо нет легального протокол может быть найден в строке спецификации или строка может не анализируется.

Пример 1:"https://stackoverflow.com/something/java/something" -> Будет выдано сообщение об ошибке

Пример 1.1: https://stackoverflow.com/something/java/something -> Ошибка не выдается.

В простом смысле это означает-> Пример 1: не анализируется внутри строки. , поэтому удалите "".

URI идентифицировать и URL locate ; однако локаторы также являются идентификаторами, поэтому каждый URL-адрес также является URI, но есть URI, которые не являются URL-адресами.

Открытая диаграмма Венна: ( URIs ( URLs ) )

выше диаграммы Венна Подразумевается: URL больше специфический , чем URI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...