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

Класс java.net.URL представляет URL и имеет полный набор методов для управления URL в Java.

Класс URL имеет несколько конструкторов для создания URL, включая следующие:

и описание
1public URL(String protocol, String host, int port, String file) throws MalformedURLException
public URL(URL context, String url) throws MalformedURLException
2public URL(String protocol, String host, String file) throws MalformedURLException
Идентичен предыдущему конструктору, за исключением того, что для данного протокола используется порт по умолчанию.
3public URL(String url) throws MalformedURLException
Создает URL путем заданной адресной строки.
4public URL(URL context, String url) throws MalformedURLException
Создает URL, анализируя аргументы URL и адресной строки.

Методы класса URL

Класс URL содержит много методов для доступа к различным частям представляемого URL. Некоторые из методов в классе URL включают следующее:

и описание
1public String getPath()
Возвращает путь URL.
2public String getQuery()
Возвращает часть запроса URL.
3public String getAuthority()
Возвращает полномочия URL.
4public int getPort()
Возвращает порт URL.
5public int getDefaultPort()
Возвращает порт по умолчанию протокола URL.
6public String getProtocol()
Возвращает протокол URL.
7public String getHost()
Возвращает хост URL.
8public String getHost()
Возвращает хост URL.
9public String getFile()
Возвращает имя файла URL.
10public String getRef()
Возвращает часть ссылки URL.
11public 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 есть много методов для установки или определения информации о соединении, включая следующие:

и описание
1Object getContent()
Получает содержимое этого URL-соединения.
2Object getContent(Class[] classes)
Получает содержимое этого URL-соединения.
3String getContentEncoding()
Возвращает значение строки заголовка с кодировкой содержимого.
4int getContentLength()
Возвращает значение строки заголовка с длиной содержимого.
5String getContentType()
Возвращает значение строки заголовка с типом содержимого.
6int getLastModified()
Возвращает значение строки заголовка с последними изменениями.
7long getExpiration()
Возвращает значение строки заголовка, превышающее длину.
8long getIfModifiedSince()
Возвращает значение поля ifModifiedSince этого объекта.
9public void setDoInput(boolean input)
Передает true (истина), чтобы обозначить, что соединение будет использоваться для ввода. Значение по умолчанию - true, потому что клиенты обычно считывают из URL-соединения.
10public void setDoOutput(boolean output)
Передает true, чтобы обозначить, что соединение будет использоваться для вывода. Значение по умолчанию - false (ложь), поскольку многие типы URL не поддерживают запись.
11public InputStream getInputStream() throws IOException
Возвращает поток входных данных URL-соединения для считывания из ресурса.
12public OutputStream getOutputStream() throws IOException
Возвращает поток выходных данных URL-соединения для записи на ресурс.
13public 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.....

Оглавление