2015-08-14 11 views
6

Uzak servisle ilgili bir sorun yaşıyorum Spring's RestTemplate kullanılarak gönderilen isteklerime yanıt olarak HTTP 400 yanıtıyla ilgili kontrolüm yok. curl kullanılarak gönderilen isteklerin kabul edilmesine rağmen, bunları RestTemplate aracılığıyla gönderilenlerle karşılaştırdım. Özellikle, Bahar istekleri Connection, Content-Type ve Content-Length başlıklarına sahip olup, curl istekleri yoktur. İlkeleri bunlara eklememek için nasıl yapılandırabilirim?Spring'in RestTemplate tarafından eklenen belirli HTTP başlıklarını nasıl kaldırırım?

+0

Bu cevap faydalı olabilir http://stackoverflow.com/questions/16339576/remove-http-response-headers-in- java –

+0

Hangi hata/yanıt kodunu alıyorsunuz? 401 Yetkisiz? – cosbor11

cevap

4

Bu gerçekten sorun değil. Tahminim doğru mesaj dönüştürücüyü belirlemediniz. Ama burada teyit böylece başlıklarını kaldırmak için bir tekniktir:

1. Özel bir ClientHttpRequestInterceptor uygulama oluşturun: Sonra

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. RestTemplate en önleme zincirine ekleyin:

@Bean 
public RestTemplate restTemplate() 
{ 

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

    return restTemplate; 
}