Метод PUT
Метод PUT класса HttpRequest создает
билдер HTTP запроса с методом PUT. Метод PUT
используется для полной замены ресурса на сервере.
В отличие от POST, который создает новый ресурс,
PUT заменяет существующий ресурс целиком.
Метод возвращает объект HttpRequest.Builder,
у которого можно дополнительно настроить URI, заголовки,
тело запроса и таймаут.
Тело запроса для метода PUT обычно задается
с помощью класса HttpRequest.BodyPublishers.
Отправка запроса выполняется через метод send
класса HttpClient.
Синтаксис
HttpRequest.Builder builder = HttpRequest.PUT(bodyPublisher)
Пример
Создадим PUT запрос с телом в виде строки и отправим его на сервер:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest
.PUT(HttpRequest.BodyPublishers.ofString("new data"))
.uri(URI.create("https://example.com/api/resource/1"))
.header("Content-Type", "text/plain")
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Результат выполнения кода:
200
"updated"
Пример
Создадим PUT запрос с телом в виде файла и отправим его асинхронно:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Path;
import java.util.concurrent.CompletableFuture;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest
.PUT(HttpRequest.BodyPublishers.ofFile(
Path.of("data.txt")
))
.uri(URI.create("https://example.com/api/upload"))
.header("Content-Type", "application/octet-stream")
.build();
CompletableFuture<HttpResponse<String>> future = client.sendAsync(
request,
HttpResponse.BodyHandlers.ofString()
);
HttpResponse<String> response = future.get();
System.out.println(response.statusCode());
}
}
Результат выполнения кода:
201
Пример
Создадим PUT запрос без тела с помощью
noBody и отправим его на сервер:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest
.PUT(HttpRequest.BodyPublishers.noBody())
.uri(URI.create("https://example.com/api/resource/1"))
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.statusCode());
System.out.println(response.uri());
}
}
Результат выполнения кода:
204
"https://example.com/api/resource/1"
Смотрите также
-
класс
HttpRequest,
который представляет HTTP запрос -
метод
POST,
который создает POST запрос -
метод
GET,
который создает GET запрос -
метод
send,
который отправляет HTTP запрос