Метод ofFile
Метод ofFile класса HttpRequest.BodyPublishers
создает объект BodyPublisher, который берет тело
HTTP-запроса из указанного файла. В первый параметр
мы передаем путь к файлу в виде объекта Path.
Метод удобно использовать, когда нужно отправить
на сервер содержимое файла, например, при загрузке
документа или изображения.
Прочитанное содержимое файла передается в теле
запроса как поток байтов. Метод возвращает
HttpRequest.BodyPublisher, который затем
передается в метод POST или PUT
класса HttpRequest.Builder.
Синтаксис
HttpRequest.BodyPublishers.ofFile(Path path)
Пример
Давайте создадим тело запроса из файла и выведем объем содержимого в байтах:
import java.net.http.HttpRequest;
import java.nio.file.Path;
public class Main
{
public static void main(String[] args)
{
Path path = Path.of("data.txt");
HttpRequest.BodyPublisher body = HttpRequest.BodyPublishers.ofFile(path);
System.out.println(body.contentLength());
}
}
Результат выполнения кода:
12
Пример
Давайте отправим содержимое файла на сервер POST-запросом:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.file.Path;
public class Main
{
public static void main(String[] args) throws Exception
{
Path path = Path.of("data.txt");
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/upload"))
.POST(HttpRequest.BodyPublishers.ofFile(path))
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.statusCode());
}
}
Результат выполнения кода:
200
Смотрите также
-
класс
HttpRequest.BodyPublishers,
который создает тела HTTP-запросов -
метод
ofString,
который создает тело запроса из строки -
метод
noBody,
который создает пустое тело запроса -
метод
POST,
который задает POST-запрос с телом