Отправка PUT и DELETE запросов через HttpURLConnection

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы выполнить HTTP-запросы типа PUT и DELETE в Java с использованием класса HttpURLConnection, следует использовать методы setRequestMethod("PUT") и setRequestMethod("DELETE"). Ниже приведены примеры кода для каждого запроса:

PUT запрос:

Java
Скопировать код
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 запрос:

Java
Скопировать код
HttpURLConnection conn = (HttpURLConnection) new URL("http://example.com/resource").openConnection();
conn.setRequestMethod("DELETE");
conn.getInputStream();

Обязательно обрабатывайте все исключения и не забывайте закрывать соединения.

Кинга Идем в IT: пошаговый план для смены профессии

Всё о HTTP-запросах: подробное руководство

Работа со классом HttpURLConnection значительно упрощается, если вы знаете подводные камни и осознаете альтернативные подходы.

HttpURLConnection: Неукоснительно следуйте принципам

Следуйте приведённым ниже правилам для стабильной работы вашего кода:

  • Устанавливайте значения таймаутов: Методы setConnectTimeout и setReadTimeout предотвратят бесконечное ожидание ответа.
  • Обрабатывайте исключения: Сетевые операции всегда должны быть обернуты в блок try-catch.
  • Закрывайте соединение: После использования HttpURLConnection принято вызывать метод disconnect() в блоке finally.

Альтернативный HttpClient

Класс HttpURLConnection не является единственным инструментом в Java для работы с HTTP. Класс HttpClient предоставляет более удобные возможности для управления потоками и соединениями:

Пример PUT запроса с использованием HttpClient:

Java
Скопировать код
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:

Java
Скопировать код
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());

Адекватная обработка ответов

Не забывайте проверять код ответа, чтобы убедиться в успешности выполнения запроса:

Java
Скопировать код
int statusCode = conn.getResponseCode();
if (statusCode == HttpURLConnection.HTTP_OK) {
    // Запрос выполнен успешно
} else {
    // Произошла ошибка, требуется диагностика
}

При использовании HttpClient код ответа можно получить через вызов response.statusCode().

Визуализация

Отправка HTTP-запроса подобна манипуляции с радиостанцией:

  • GET – включение поп-музыки.
  • POST – добавление новой песни в плейлист.
  • PUT – изменение текущего плейлиста.
  • DELETE – окончательное отключение радиостанции.

С классом HttpURLConnection достаточно выбрать "PUT" или "DELETE" как метод запроса:

Java
Скопировать код
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT"); // Меняем плейлист
connection.setRequestMethod("DELETE"); // Отключаем радиостанцию

Настройка запроса столь же проста, как поиск необходимой радиостанции.

Практические шаги: работа с содержимым и заголовками в запросах

Для PUT-запросов важно отправить в теле запроса необходимые данные:

  • Указывайте тип содержимого: Воспользуйтесь conn.setRequestProperty("Content-Type", "your_content_type").
  • Записывайте данные: Используйте OutputStreamWriter, чтобы передать данные с помощью conn.getOutputStream(). Не забывайте закрывать потоки.

Для DELETE-запросов передача данных, как правило, не требуется, но если сервер ожидает определённые заголовки, установите их также, как и при выполнении PUT-запроса.

Полезные материалы

  1. HttpURLConnection (Java Platform SE 8) — официальная документация Java.
  2. Практические советы и примеры использования HttpURLConnection — ценные рекомендации на Stack Overflow.
  3. Руководство по использованию HttpURLConnection для GET и POST запросов от DigitalOcean.
  4. Инструкция по сетевому взаимодействию в Java с применением HttpURLConnection от Vogella.
  5. Класс Java HttpURLConnection — детальное пояснение с примерами и кодом на javatpoint.