Quiero enviar una solicitud HTTP usando Spring RestTemplate , a través del método de intercambio .
El tercer parámetro es una instancia de HttpEntity , que permite configurar los encabezados/cuerpo de la solicitud. Probé el siguiente fragmento de código:
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()); } }Tenga en cuenta que http://httpbin.org/headers es un servicio de solicitud y respuesta HTTP simple, que (en este caso) devuelve encabezados HTTP.
El resultado de ejecutar el código Java es el siguiente:
{ "headers": { "Accept": "text/plain, */*", "Connection": "close", "Host": "httpbin.org", "User-Agent": "whatever" } } Como puede ver, el User-Agent está configurado como yo quería, pero el Host no.
¿Cómo puedo configurar
Hosten el valor que deseo?
Quizás esto ayude. No sé si la llamada http subyacente se realiza a través de HttpUrlConnection, pero vale la pena intentar establecer sun.net.http.allowRestrictedHeaders en verdadero.
Ver: