を入力して、のHTTPリクエストをexchangeメソッドで送信したいとします。Spring RestTemplateの "Host"ヘッダーを設定しても動作しません
第3パラメータは、HttpEntity
のインスタンスで、要求のヘッダー/本文を設定できます。 http://httpbin.org/headersは、単純なHTTPリクエストのHTTPヘッダーを返す(この場合)&応答サービスであること
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
public class Connector {
public static void main(String[] args) {
HttpHeaders headers = new HttpHeaders();
headers.set("Host", "www.example.com");
headers.set("User-Agent", "whatever");
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = restTemplate.exchange(
"http://httpbin.org/headers", HttpMethod.GET,
new HttpEntity<String>(null, headers), String.class);
System.out.println(responseEntity.getBody());
}
}
に注意:私は、次のコードスニペットを試みました。あなたが見ることができるように
{
"headers": {
"Accept": "text/plain, */*",
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "whatever"
}
}
は、User-Agent
は私が欲しかったものに設定されていますが、Host
ではない次のよう
Javaコードを実行した結果です。
Host
を希望の値に設定するにはどうすればよいですか?
私はあなたができるかわからない - それは、通常とは異なるものに 'Host'ヘッダーを設定しても意味がありません。 URI。 – chrylis
@chrylis:コメントありがとう。私の使用例では、一部のホストHに対してリバースプロキシを作成しています。プロキシはホストHでホストされ、IPで実際のホストHに接続します。しかし、実際のホストHは仮想ホスティングを使用するため、私の要求(すなわち、IPアドレスへのリバースプロキシからの要求)にホスト名Hを指定する必要があります。 –