Обработка URL в Java
URL (Uniform Resource Locator), также известный как веб-адрес, представляет ресурсы в Интернете, такие как веб-страницы или FTP-адреса.
В этом разделе мы расскажем, как Java обрабатывает URL. URL можно разделить на следующие части.
protocol://host:port/path?query#fragment
Протокол может быть HTTP, HTTPS, FTP и File; порт — это номер порта; путь — это путь к файлу и имя файла.
Пример URL с протоколом HTTP выглядит следующим образом:
http://www.example.com/index.html?language=cn#j2se
Разбор URL:
- Протокол:http
- Хост (host:port):www.example.com
- Номер порта:80. В приведённом выше примере URL порт не указан, так как номер порта по умолчанию для протокола HTTP — 80.
- Путь к файлу (path):/index.html
- Параметры запроса (query):language=cn
- Фрагмент (fragment):j2se, указывающий положение HTML-элемента с атрибутом id j2se на веб-странице.
Методы класса URL
Класс URL определён в пакете java.net и используется для работы с содержимым, связанным с 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() Получает authority-часть данного 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:
URLDemo.java
Результат компиляции и выполнения приведенного выше примера выглядит следующим образом:
URL 为:http://www.example.com/index.html?language=cn#j2se 协议为:http 验证信息:www.example.com 文件名及请求参数:/index.html?language=cn 主机名:www.example.com 路径:/index.html 端口:-1 默认端口:80 请求参数:language=cn 定位位置:j2se
URLConnections Методы класса
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() Возвращает значение последнего |
| 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. Значение по умолчанию — true. |
| 11 | public InputStream getInputStream() throws IOException Возвращает входной поток URL, используемый для чтения ресурсов. |
| 12 | public OutputStream getOutputStream() throws IOException Возвращает выходной поток URL, используемый для записи ресурсов. |
| 13 | public URL getURL() Возвращает URL, к которому подключён объект URLConnection. |
Пример
В следующем примере URL использует протокол HTTP. openConnection возвращает объект HttpURLConnection.
URLConnDemo.java
Результат компиляции и выполнения приведенного выше примера выглядит следующим образом:
$ javac URLConnDemo.java $ java URLConnDemo .....这里会输出Example首页(http://www.example.com)的 HTML 内容.....Другие расширения