Обработка URL
URL обозначает унифицированный указатель ресурса и представляет ресурс во Всемирной компьютерной сети, такой как веб-страница или каталог FTP (протокол пересылки файлов).
В этом разделе указано о том, как писать Java-программы, которые взаимодействуют с URL. URL может быть разбит на части, как указано ниже:
protocol://host:port/path?query#ref
Примеры протоколов включают HTTP (протокол передачи гипертекстовых файлов), HTTPS (протокол защищенной передачи гипертекстовой информации), FTP и файлов. Путь также называется именем файла, а хост также называется полномочием.
Ниже приведен URL-адрес веб-страницы, протоколом которой является HTTP:
https://www.amrood.com/index.htm?language=en#j2se
Обратите внимание, что этот URL не указывает порт, и в этом случае используется порт по умолчанию для протокола. При HTTP порт по умолчанию - 80.
Содержание [скрыть]
Конструкторы класса URL
Методы класса URL
Пример
Методы класса URLConnection
Пример
Конструкторы класса URL
Класс java.net.URL представляет URL и имеет полный набор методов для управления URL в Java.
Класс URL имеет несколько конструкторов для создания URL, включая следующие:
№ и описание
1 public URL(String protocol, String host, int port, String file) throws MalformedURLException
public URL(URL context, String url) throws MalformedURLException
2 public URL(String protocol, String host, String file) throws MalformedURLException
Идентичен предыдущему конструктору, за исключением того, что для данного протокола используется порт по умолчанию.
3 public URL(String url) throws MalformedURLException
Создает URL путем заданной адресной строки.
4 public URL(URL context, String url) throws MalformedURLException
Создает URL, анализируя аргументы URL и адресной строки.
Методы класса URL
Класс 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()
Возвращает порт по умолчанию протокола URL.
6 public String getProtocol()
Возвращает протокол URL.
7 public String getHost()
Возвращает хост URL.
8 public String getHost()
Возвращает хост URL.
9 public String getFile()
Возвращает имя файла URL.
10 public String getRef()
Возвращает часть ссылки URL.
11 public URLConnection openConnection() throws IOException
Открывает соединение с URL, позволяя клиенту взаимодействовать с ресурсом.
Пример
Следующая программа URLDemo демонстрирует различные части URL. URL вводится в командной строке, и программа URLDemo выводит данные каждой части данного URL.
Live Demo
// Название файла: URLDemo.java
import java.net.*;
import java.io.*;
public class URLDemo {
public static void main(String [] args) {
try {
URL url = new URL("https://www.amrood.com/index.htm?language=en#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("порт: " + url.getPort());
System.out.println("порт по умолчанию: " + url.getDefaultPort());
System.out.println("запрос: " + url.getQuery());
System.out.println("ссылка: " + url.getRef());
} catch (IOException e) {
e.printStackTrace();
}
}
}
Пробный запуск этой программы даст следующий результат:
URL: https://www.amrood.com/index.htm?language=en#j2se
протокол: http
полномочия: www.amrood.com
имя файла: /index.htm?language=en
хост: www.amrood.com
путь: /index.htm
порт: -1
порт по умолчанию: 80
запрос: language=en
ссылка: j2se
Методы класса URLConnection
Метод openConnection() возвращает java.net.URLConnection, абстрактный класс, подклассы которого представляют различные типы подключений URL.
Например:
Если вы подключаетесь к URL, протокол которого HTTP, метод openConnection() возвращает объект подключения HttpURL.
Если вы подключаетесь к URL, который представляет файл JAR (архивный файл приложения на языке Java), метод openConnection() возвращает объект подключения JarURL и т.д.
У класса подключения URL есть много методов для установки или определения информации о соединении, включая следующие:
№ и описание
1 Object getContent()
Получает содержимое этого URL-соединения.
2 Object getContent(Class[] classes)
Получает содержимое этого URL-соединения.
3 String getContentEncoding()
Возвращает значение строки заголовка с кодировкой содержимого.
4 int getContentLength()
Возвращает значение строки заголовка с длиной содержимого.
5 String getContentType()
Возвращает значение строки заголовка с типом содержимого.
6 int getLastModified()
Возвращает значение строки заголовка с последними изменениями.
7 long getExpiration()
Возвращает значение строки заголовка, превышающее длину.
8 long getIfModifiedSince()
Возвращает значение поля ifModifiedSince этого объекта.
9 public void setDoInput(boolean input)
Передает true (истина), чтобы обозначить, что соединение будет использоваться для ввода. Значение по умолчанию - true, потому что клиенты обычно считывают из URL-соединения.
10 public void setDoOutput(boolean output)
Передает true, чтобы обозначить, что соединение будет использоваться для вывода. Значение по умолчанию - false (ложь), поскольку многие типы URL не поддерживают запись.
11 public InputStream getInputStream() throws IOException
Возвращает поток входных данных URL-соединения для считывания из ресурса.
12 public OutputStream getOutputStream() throws IOException
Возвращает поток выходных данных URL-соединения для записи на ресурс.
13 public URL getURL()
Возвращает URL, с которым связан данный объект URL-соединения.
Пример
Следующая программа URLConnectionDemo подключается к URL-адресу, введенному из командной строки.
Если URL представляет ресурс HTTP, соединение преобразуется в HttpURL-соединение, и данные в ресурсе считываются по одной строке за раз.
// File Name : URLConnDemo.java
import java.net.*;
import java.io.*;
public class URLConnDemo {
public static void main(String [] args) {
try {
URL url = new URL("https://www.amrood.com");
URLConnection urlConnection = url.openConnection();
HttpURLConnection connection = null;
if(urlConnection instanceof HttpURLConnection) {
connection = (HttpURLConnection) urlConnection;
}else {
System.out.println("Пожалуйста, введите HTTP 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();
}
}
}
Пробный запуск этой программы даст следующий результа:
$ java URLConnDemo
.....HTML-содержимое домашней страницы amrood.com.....