Заголовки запроса в Java
Заголовки запроса - пары имя и значение, которые
идут до тела. Построитель HttpRequest
принимает их вызовом header или
setHeader для одного поля.
Путь "/headers" на httpbin.org
возвращает переданные заголовки в теле ответа.
Достаточно задать, например, тип принимаемого
текста:
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.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/headers"))
.header("Accept", "text/plain")
.GET()
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString(),
);
System.out.println(response.body());
}
}
Собственные имена вроде "X-Trace" тоже
доходят до сервера. Их часто используют для
меток трассировки или версии клиента:
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.newBuilder().build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/headers"))
.header("X-Trace", "alpha-7")
.GET()
.build();
HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString(),
);
System.out.println(response.body());
}
}
Отправьте чтение на "/headers" с полем
"Accept-Language" равным "ru".
Выведите тело ответа.
Выведите тело ответа для "/headers",
если в запрос добавлено поле "X-Client"
со значением "desk".