Отправка PUT и DELETE запросов через HttpURLConnection
Быстрый ответ
Чтобы выполнить HTTP-запросы типа PUT и DELETE в Java с использованием класса HttpURLConnection
, следует использовать методы setRequestMethod("PUT")
и setRequestMethod("DELETE")
. Ниже приведены примеры кода для каждого запроса:
PUT запрос:
HttpURLConnection conn = (HttpURLConnection) new URL("http://example.com/resource").openConnection();
conn.setRequestMethod("PUT");
conn.setDoOutput(true);
try (OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream())) {
writer.write("data=example");
}
conn.getInputStream();
DELETE запрос:
HttpURLConnection conn = (HttpURLConnection) new URL("http://example.com/resource").openConnection();
conn.setRequestMethod("DELETE");
conn.getInputStream();
Обязательно обрабатывайте все исключения и не забывайте закрывать соединения.
Всё о HTTP-запросах: подробное руководство
Работа со классом HttpURLConnection
значительно упрощается, если вы знаете подводные камни и осознаете альтернативные подходы.
HttpURLConnection: Неукоснительно следуйте принципам
Следуйте приведённым ниже правилам для стабильной работы вашего кода:
- Устанавливайте значения таймаутов: Методы
setConnectTimeout
иsetReadTimeout
предотвратят бесконечное ожидание ответа. - Обрабатывайте исключения: Сетевые операции всегда должны быть обернуты в блок
try-catch
. - Закрывайте соединение: После использования
HttpURLConnection
принято вызывать методdisconnect()
в блокеfinally
.
Альтернативный HttpClient
Класс HttpURLConnection
не является единственным инструментом в Java для работы с HTTP. Класс HttpClient
предоставляет более удобные возможности для управления потоками и соединениями:
Пример PUT запроса с использованием HttpClient
:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create("http://example.com/resource"))
.PUT(HttpRequest.BodyPublishers.ofString("data=example"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
Пример DELETE запроса с использованием HttpClient
:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create("http://example.com/resource"))
.DELETE()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
Адекватная обработка ответов
Не забывайте проверять код ответа, чтобы убедиться в успешности выполнения запроса:
int statusCode = conn.getResponseCode();
if (statusCode == HttpURLConnection.HTTP_OK) {
// Запрос выполнен успешно
} else {
// Произошла ошибка, требуется диагностика
}
При использовании HttpClient
код ответа можно получить через вызов response.statusCode()
.
Визуализация
Отправка HTTP-запроса подобна манипуляции с радиостанцией:
- GET – включение поп-музыки.
- POST – добавление новой песни в плейлист.
- PUT – изменение текущего плейлиста.
- DELETE – окончательное отключение радиостанции.
С классом HttpURLConnection
достаточно выбрать "PUT" или "DELETE" как метод запроса:
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT"); // Меняем плейлист
connection.setRequestMethod("DELETE"); // Отключаем радиостанцию
Настройка запроса столь же проста, как поиск необходимой радиостанции.
Практические шаги: работа с содержимым и заголовками в запросах
Для PUT-запросов важно отправить в теле запроса необходимые данные:
- Указывайте тип содержимого: Воспользуйтесь
conn.setRequestProperty("Content-Type", "your_content_type")
. - Записывайте данные: Используйте
OutputStreamWriter
, чтобы передать данные с помощьюconn.getOutputStream()
. Не забывайте закрывать потоки.
Для DELETE-запросов передача данных, как правило, не требуется, но если сервер ожидает определённые заголовки, установите их также, как и при выполнении PUT-запроса.
Полезные материалы
- HttpURLConnection (Java Platform SE 8) — официальная документация Java.
- Практические советы и примеры использования
HttpURLConnection
— ценные рекомендации на Stack Overflow. - Руководство по использованию
HttpURLConnection
для GET и POST запросов от DigitalOcean. - Инструкция по сетевому взаимодействию в Java с применением
HttpURLConnection
от Vogella. - Класс
Java HttpURLConnection
— детальное пояснение с примерами и кодом на javatpoint.