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?
6
A
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;
}
Bu cevap faydalı olabilir http://stackoverflow.com/questions/16339576/remove-http-response-headers-in- java –
Hangi hata/yanıt kodunu alıyorsunuz? 401 Yetkisiz? – cosbor11