2015-08-14 10 views
6

Sto riscontrando un problema con un servizio remoto Non ho alcun controllo sulla risposta con risposta HTTP 400 alle mie richieste inviate utilizzando il RestTemplate di Spring. Le richieste inviate utilizzando curl vengono accettate, quindi le ho confrontate con quelle inviate tramite RestTemplate. In particolare, le richieste Spring hanno intestazioni Connection, Content-Type e Content-Length che le richieste curl non soddisfano. Come configuro Spring non aggiungerli?Come rimuovere alcune intestazioni HTTP aggiunte da RestTemplate di Spring?

+0

Questa risposta potrebbe essere utile http://stackoverflow.com/questions/16339576/remove-http-response-headers-in- java –

+0

Che codice di errore/risposta stai ottenendo? 401 non autorizzato? – cosbor11

risposta

4

Probabilmente non è questo il problema. La mia ipotesi è che non hai specificato il convertitore di messaggi corretto. Ma qui è una tecnica per rimuovere le intestazioni in modo da poter confermare che:

1. Creare un'implementazione personalizzata ClientHttpRequestInterceptor:

public class CustomHttpRequestInterceptor implements ClientHttpRequestInterceptor 
{ 

    @Override 
    public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException 
    { 
     HttpHeaders headers = request.getHeaders(); 
     headers.remove(HttpHeaders.CONNECTION); 
     headers.remove(HttpHeaders.CONTENT_TYPE); 
     headers.remove(HttpHeaders.CONTENT_LENGTH); 

     return execution.execute(request, body); 
    } 

} 

2. Quindi aggiungere alla catena di intercettore del RestTemplate:

@Bean 
public RestTemplate restTemplate() 
{ 

    RestTemplate restTemplate = new RestTemplate(); 
    restTemplate.setInterceptors(Arrays.asList(new CustomHttpRequestInterceptor(), new LoggingRequestInterceptor())); 

    return restTemplate; 
} 
Problemi correlati