На этом шаге мы рассмотрим классы URLConnection и HttpURLConnection
Помимо классов URI и URL для работы с сетью необходимы навыки работы с классами URLConnection и HttpURLConnection, которые нужны для правильной обработкиь подключений к каким-либо ресурсам. В таблице 1 представлены некоторые функции класса URLConnection, а в таблице 2 - функции класса HttpURLConnection.
Функция | Описание |
---|---|
void setConnectTimeout(int timeout) | Устанавливается максимальное время получения соединения. Если время истекло, то бросается исключение. Производить вызов данной функции нужно только до соединения. |
void setDoInput(boolean doinput) | Устанавливает флаг того, что из потока будет происходить чтение данных. Производить вызов данной функции нужно только до соединения. |
void setDoOutput(boolean dooutput) | Устанавливает флаг того, что в поток будет производиться запись данных. Производить вызов данной функции нужно только до соединения. |
void connect() | Производит соединение. |
String getContentType() | Получает информацию о типе содержимого ответа. |
int getContentLength() | Получает длину ответа (для коротких ответов). |
long getContentLengthLong() | Получает длину ответа (для больших ответов). |
Функция | Описание |
---|---|
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