Шаг 149.
Язык программирования Java.
Классы URLConnection и HttpURLConnection

На этом шаге мы рассмотрим классы URLConnection и HttpURLConnection

Помимо классов URI и URL для работы с сетью необходимы навыки работы с классами URLConnection и HttpURLConnection, которые нужны для правильной обработкиь подключений к каким-либо ресурсам. В таблице 1 представлены некоторые функции класса URLConnection, а в таблице 2 - функции класса HttpURLConnection.

Таблица 1. Функции класса URLConnection
Функция Описание
void setConnectTimeout(int timeout) Устанавливается максимальное время получения соединения. Если время истекло, то бросается исключение. Производить вызов данной функции нужно только до соединения.
void setDoInput(boolean doinput) Устанавливает флаг того, что из потока будет происходить чтение данных. Производить вызов данной функции нужно только до соединения.
void setDoOutput(boolean dooutput) Устанавливает флаг того, что в поток будет производиться запись данных. Производить вызов данной функции нужно только до соединения.
void connect() Производит соединение.
String getContentType() Получает информацию о типе содержимого ответа.
int getContentLength() Получает длину ответа (для коротких ответов).
long getContentLengthLong() Получает длину ответа (для больших ответов).

Таблица 2. Функции класса HttpURLConnection
Функция Описание
int getResponseCode() Получается код ответа.
String getResponseMessage() Получает сообщение ответа.
void disconnect() Производит отключение.

Приведем ниже пример использования данных функций.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Main {
    public static void main(String[] args) throws IOException {
        URL url = new URL("http://it.kgsu.ru");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        try {
            connection.setConnectTimeout(10000);
            connection.setDoInput(true);
            connection.connect();

    System.out.println("Response code = " + connection.getResponseCode());
    System.out.println("Response message = " + connection.getResponseMessage());
    System.out.println("Response content type = " + connection.getContentType());
    System.out.println("Response content length = " + connection.getContentLength());

            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
                try (InputStream stream = connection.getInputStream()) {
                    new BufferedReader(new InputStreamReader(stream, "windows-1251"))
                            .lines()
                            .forEach(System.out::println);
                }
            }
        } finally {
            // Обязательно закрываем подключение
            connection.disconnect();
        }
    }
}

Проект можно взять здесь

На следующем шаге мы рассмотрим пример использования Gson и URLConnection

Предыдущий шаг Содержание Следующий шаг