Spec-Zone .ru
спецификации, руководства, описания, API
След: Пользовательские Сети
Урок: Работа с URL
Создание URL
Домашняя страница > Пользовательские Сети > Работа с URL

Создание URL

Самый легкий способ создать a URL объект от a String это представляет удобочитаемую форму адреса URL. Это обычно - форма, которую другой человек будет использовать для URL. В Вашей программе Java можно использовать a String содержа этот текст, чтобы создать a URL объект:

URL myURL = new URL("http://example.com/");

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

Создание URL Относительно Другого

Относительный URL содержит только достаточную информацию, чтобы достигнуть ресурса относительно (или в контексте) другой URL.

Относительные спецификации URL часто используются в пределах файлов HTML. Например, предположите, что Вы пишете вызванный файл HTML JoesHomePage.html. В пределах этой страницы, ссылки к другим страницам, PicturesOfMe.html и MyKids.html, это находится на той же самой машине и в том же самом каталоге как JoesHomePage.html. Ссылки к PicturesOfMe.html и MyKids.html от JoesHomePage.html мог быть определен как имена файлов, как это:

<a href="PicturesOfMe.html">Pictures of Me</a>
<a href="MyKids.html">Pictures of My Kids</a>

Этими адресами URL являются относительные URL. Таким образом, URL определяются относительно файла, в котором они содержатся — JoesHomePage.html.

В Ваших программах Java можно создать a URL объект от относительной спецификации URL. Например, предположите, что Вы знаете два URL на сайте example.com:

http://example.com/pages/page1.html
http://example.com/pages/page2.html

Можно создать URL объекты для этих страниц относительно их общего базового URL: http://example.com/pages/ как это:

URL myURL = new URL("http://example.com/pages/");
URL page1URL = new URL(myURL, "page1.html");
URL page2URL = new URL(myURL, "page2.html");

Этот фрагмент кода использует URL конструктор, который позволяет Вам создавать a URL объект от другого URL объект (основа) и относительная спецификация URL. Общая форма этого конструктора:

URL(URL baseURL, String relativeURL)

Первым параметром является a URL объект, который определяет основу нового URL. Вторым параметром является a String это определяет остальную часть имени ресурса относительно основы. Если baseURL нуль, тогда этот конструктор обработки relativeURL как абсолютная спецификация URL. Наоборот, если relativeURL абсолютная спецификация URL, тогда конструктор игнорирует baseURL.

Этот конструктор также полезен для создания URL объекты для именованных привязок (также названный ссылками) в пределах файла. Например, предположите page1.html файлу вызывали именованную привязку BOTTOM у основания файла. Можно использовать относительного конструктора URL, чтобы создать a URL объект для этого как это:

URL page1BottomURL = new URL(page1URL,"#BOTTOM");

Другие Конструкторы URL

URL class предоставляет двум дополнительным конструкторам для того, чтобы они создали a URL объект. Эти конструкторы полезны, когда Вы работаете с URL, такими как HTTP URL, у которых есть имя хоста, имя файла, номер порта, и ссылочные компоненты в части имени ресурса URL. Эти два конструктора полезны, когда у Вас нет Строки, содержащей полную спецификацию URL, но Вы действительно знаете различные компоненты URL.

Например, предположите, что Вы разрабатываете панель просмотра сети, подобную панели просмотра файла, которая позволяет пользователям выбирать протокол, имя хоста, номер порта, и имя файла. Можно создать a URL от компонентов панели. Первый конструктор создает a URL объект из протокола, имени хоста, и имени файла. Следующий фрагмент кода создает a URL к page1.html файл в example.com сайт:

new URL("http", "example.com", "/pages/page1.html");

Это эквивалентно

new URL("http://example.com/pages/page1.html");

Первым параметром является протокол, вторым является имя хоста, и последним является путь файла. Отметьте, что имя файла содержит наклонную черту вправо вначале. Это указывает, что имя файла определяется от корня узла.

Финал URL конструктор добавляет номер порта к списку параметров, используемых в предыдущем конструкторе:

URL gamelan = new URL("http", "example.com", 80, "pages/page1.html"); 

Это создает a URL объект для следующего URL:

http://example.com:80/pages/page1.html

Если Вы создаете a URL объект используя одного из этих конструкторов, можно получить a String содержа полный URL адресуется при использовании URL объект toString метод или эквивалент toExternalForm метод.

URL адресуется со Специальными символами

Некоторые адреса URL содержат специальные символы, например пробел. Как это:

http://example.com/hello world/

Чтобы сделать эти символы законными, они должны быть закодированы прежде, чем передать их конструктору URL.

URL url = new URL("http://example.com/hello%20world");

Кодирование специального символа (ов) в этом примере легко, поскольку есть только один символ, который нуждается в кодировании, но для адресов URL, у которых есть несколько из этих символов или если Вы неуверены при записи Вашего кода, к каким адресам URL Вы должны будете получить доступ, можно использовать конструкторов мультипараметра java.net.URI class, чтобы автоматически заботиться о кодировании для Вас.

URI uri = new URI("http", "example.com", "/hello world/", "");

И затем преобразуйте URI в URL.

URL url = uri.toURL();

MalformedURLException

Каждый из четырех URL конструкторы бросают a MalformedURLException если параметры конструктору обращаются к a null или неизвестный протокол. Как правило, Вы хотите поймать и обработать это исключение, встраивая Ваши операторы конструктора URL в a try/catch пара, как это:

try {
    URL myURL = new URL(...);
} 
catch (MalformedURLException e) {
    // exception handler code here
    // ...
}

См. Исключения для информации об обработке исключений.


Отметьте: 

URLs являются объектами "записи однажды". Как только Вы создали a URL объект, невозможно изменить ни один из его атрибутов (протокол, имя хоста, имя файла, или номер порта).



Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Каков URL?
Следующая страница: Парсинг URL