English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
URL (Uniform Resource Locator) 中文名ется единым идентификатором ресурса, иногда также называется веб-адресом. Это указывает на ресурсы в Интернете, такие как веб-страницы или адреса FTP.
В этой главе мы рассмотрим, как Java обрабатывает URL. URL можно разделить на несколько частей.
protocol://host:port/path?query#fragment
protocol(протокол) может быть HTTP, HTTPS, FTP и File, port - номер порта, path - путь к файлу и имя файла.
Пример URL для протокола HTTP:
http://ru.oldtoolbag.com/index.html?language=cn#j2se
Анализ URL:
Протокол (protocol):http
Хост (host:port):ru.oldtoolbag.com
Номер порта (port): 80, в данном примере URL не указан порт, так как порт по умолчанию для протокола HTTP составляет 80.
Путь к файлу (path):/index.html
Параметры запроса (query):language=cn
Определение позиции (fragment):j2se, определение позиции HTML элемента с атрибутом id равным j2se.
В пакете java.net определен класс URL, который используется для обработки информации о URL. В следующем разделе мы рассмотрим создание и использование класса URL.
java.net.URL предоставляет различные методы для создания URL и позволяет извлекать ресурсы с помощью java.net.URL.
Номер | Описание метода |
---|---|
1 | public URL(String protocol, String host, int port, String file) throws MalformedURLException. Создание URL с помощью указанных параметров (протокол, имя хоста, номер порта, имя файла). |
2 | public URL(String protocol, String host, String file) throws MalformedURLException Создание URL с помощью указанного протокола, имени хоста и имени файла, порт использует порт по умолчанию протокола. |
3 | public URL(String url) throws MalformedURLException Создание URL с помощью строки URL |
4 | public URL(URL context, String url) throws MalformedURLException Создание с использованием базового адреса и относительного URL |
Класс URL содержит множество методов для доступа к различным частям URL, подробности методов и их описание приведены ниже:
Номер | Описание метода |
---|---|
1 | public String getPath() Возвращает часть пути URL. |
2 | public String getQuery() Возвращает часть запроса URL. |
3 | public String getAuthority() Получает часть авторизации URL. |
4 | public int getPort() Возвращает часть порта URL. |
5 | public int getDefaultPort() Возвращает портовый номер по умолчанию для протокола. |
6 | public String getProtocol() Возвращает протокол URL. |
7 | public String getHost() Возвращает хост URL. |
8 | public String getFile() Возвращает часть файла URL. |
9 | public String getRef() Получаем точку атаки этого URL (также известную как "ссылка"). |
10 | public URLConnection openConnection() throws IOException Открываем соединение с URL и запускаем клиент для доступа к ресурсам. |
Следующий пример демонстрирует использование класса URL из пакета java.net для получения различных частей URL:
import java.net.*; import java.io.*; public class URLDemo { public static void main(String [] args) { try { URL url = new URL("http://ru.oldtoolbag.com/index.html?language=cn#j2se"); System.out.println("URL: " + url.toString()); System.out.println("Протокол: " + url.getProtocol()); System.out.println("Информация для проверки: " + url.getAuthority()); System.out.println("Имя файла и параметры запроса: " + url.getFile()); System.out.println("Имя хоста: " + url.getHost()); System.out.println("Путь: " + url.getPath()); System.out.println("Port: " + url.getPort()); System.out.println("Default port: " + url.getDefaultPort()); System.out.println("Параметры запроса: " + url.getQuery()); System.out.println("Местоположение: " + url.getRef()); catch(IOException e) { e.printStackTrace(); } } }
Результат компиляции и выполнения примера выше таков:
URL: http://ru.oldtoolbag.com/index.html?language=cn#j2se Протокол: http Информация о проверке: ru.oldtoolbag.com Имя файла и параметры запроса: /index.html?language=cn Имя хоста: ru.oldtoolbag.com Путь: /index.html Port: -1 Default port: 80 Параметры запроса: language=cn Местоположение: j2se
Метод openConnection() возвращает объект java.net.URLConnection.
Например:
Если URL подключен по протоколу HTTP, метод openConnection() вернет объект HttpURLConnection.
Если URL, к которому вы подключены, является файлом JAR, метод openConnection() вернет объект JarURLConnection.
и т.д...
Список методов класса URLConnection:
Номер | Описание метода |
---|---|
1 | Object getContent() Искать содержимое ссылки URL |
2 | Object getContent(Class[] classes) Искать содержимое ссылки URL |
3 | String getContentEncoding() Возвратить значение поля 'content-encoding' заголовка. |
4 | int getContentLength() Возвратить значение поля 'content-length' заголовка. |
5 | String getContentType() Возвратить значение поля 'content-type' заголовка. |
6 | int getLastModified() Возвратить значение поля 'last-modified' заголовка. |
7 | long getExpiration() 返回头部expires字段值。 |
8 | long getIfModifiedSince() 返回对象的ifModifiedSince字段值。 |
9 | public void setDoInput(boolean input) URL连接可用于输入和/或输出。如果打算使用URL连接进行输入,则将DoInput标志设置为true;如果不打算使用,则设置为false。默认值为true。 |
10 | public void setDoOutput(boolean output) URL连接可用于输入和/或输出。如果打算使用URL连接进行输出,则将DoOutput标志设置为true;如果不打算使用,则设置为false。默认值为false。 |
11 | public InputStream getInputStream() throws IOException 返回URL的输入流,用于读取资源 |
12 | public OutputStream getOutputStream() throws IOException 返回URL的输出流,用于写入资源。 |
13 | public URL getURL() 返回URLConnection对象连接的URL |
以下示例中URL采用了HTTP 协议。openConnection 返回HttpURLConnection对象。
import java.net.*; import java.io.*; public class URLConnDemo { public static void main(String [] args) { try { URL url = new URL("http://ru.oldtoolbag.com"); URLConnection urlConnection = url.openConnection(); HttpURLConnection connection = null; if(urlConnection instanceof HttpURLConnection) { connection = (HttpURLConnection) urlConnection; } else { System.out.println("Введите URL адрес"); return; } BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream())); String urlString = ""; String current; while((current = in.readLine()) != null) { urlString += current; } System.out.println(urlString); catch(IOException e) { e.printStackTrace(); } } }
Результат компиляции и выполнения примера выше таков:
$ javac URLConnDemo.java $ java URLConnDemo .....Здесь будет выводиться содержимое домашней страницы основного учебного сайта (http://ru.oldtoolbag.com) в формате HTML.....