Метод ofFile
Метод ofFile класса HttpResponse.BodyHandlers возвращает
обработчик тела ответа BodyHandler<Path>, который записывает
входящие данные из тела HTTP-ответа в файл. Первым параметром
метод принимает объект Path, указывающий на файл, в который
будет сохранено тело ответа. Вторым необязательным параметром
можно передать набор опций OpenOption, определяющих способ
открытия файла (например, перезапись или дозапись). Если файл
не существует, он будет создан. Полученный обработчик передается
в метод send или sendAsync объекта HttpClient.
Синтаксис
HttpResponse.BodyHandlers.ofFile(Path file, OpenOption... options)
Пример
Давайте отправим GET-запрос и сохраним тело ответа
в файл response.txt:
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
{
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.GET()
.build();
Path file = Path.of("response.txt");
HttpResponse<Path> response = client.send(
request,
HttpResponse.BodyHandlers.ofFile(file)
);
System.out.println(response.statusCode());
System.out.println(response.body());
}
}
Результат выполнения кода:
200
response.txt
Пример
Давайте сохраним тело ответа в файл с дозаписью,
передав опцию StandardOpenOption.APPEND:
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.nio.file.StandardOpenOption;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.GET()
.build();
Path file = Path.of("response.txt");
HttpResponse<Path> response = client.send(
request,
HttpResponse.BodyHandlers.ofFile(
file,
StandardOpenOption.CREATE,
StandardOpenOption.APPEND
)
);
System.out.println(response.statusCode());
}
}
Результат выполнения кода:
200
Смотрите также
-
класс
HttpResponse.BodyHandlers,
который содержит обработчики тела ответа -
метод
ofString,
который сохраняет тело ответа в строку -
метод
ofByteArray,
который сохраняет тело ответа в массив байтов -
метод
send,
который отправляет синхронный HTTP-запрос