(или любой другой ограниченный заголовок), выполнив код с помощью:

ой код:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("http://127.0.0.1:8081/"))
    .header("Host", "test.example.com")
    .build();
client.send(request, HttpResponse.BodyHandlers.ofString());

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

GET / HTTP/1.1
Connection: Upgrade, HTTP2-Settings
Content-Length: 0
Host: 127.0.0.1:8081
HTTP2-Settings: AAEAAEAAAAIAAAABAAMAAABkAAQBAAAAAAUAAEAA
Upgrade: h2c
User-Agent: Java-http-client/10
Host: test.example.com

Как вы можете видеть, он отправляет дваHost заголовки (тот из URI и тот, который я указал), но я хотел бы отправитьHost заголовок, который я указал, а не тот из URI. Возможно ли с этим клиентом?

РЕДАКТИРОВАТЬ: В Java 11, это становится еще хуже (вам нужно изменить строку client.send на:client.send(request, HttpResponse.BodyHandlers.ofString());):

java.lang.IllegalArgumentException: restricted header name: "Host"

Как я могу настроить этот заголовок (необходимый для тестирования виртуальных хостов)?

Я также попробовалsetHeader и получить точно такую ​​же проблему (либо двойнойHost заголовки или исключение).

РЕДАКТИРОВАТЬ: я сообщилОшибка JDK.

Ответы на вопрос(2)

Ваш ответ на вопрос