gpt4 book ai didi

java - 如何删除 Spring 的 RestTemplate 添加的某些 HTTP header ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:57 27 4
gpt4 key购买 nike

我在使用远程服务时遇到问题,我无法控制对使用 Spring 的 RestTemplate 发送的请求的 HTTP 400 响应进行响应。不过,使用 curl 发送的请求会被接受,因此我将它们与通过 RestTemplate 发送的请求进行了比较。特别是,Spring 请求具有 header ConnectionContent-TypeContent-Length,而 curl 请求没有吨。我如何配置 Spring 不添加这些?

最佳答案

很可能这实际上不是问题所在。我的猜测是您没有指定正确的消息转换器。但这里有一种删除 header 的技术,因此您可以确认:

<强>1。创建自定义 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。然后将其添加到 RestTemplate 的拦截器链中:

@Bean
public RestTemplate restTemplate()
{

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

return restTemplate;
}

关于java - 如何删除 Spring 的 RestTemplate 添加的某些 HTTP header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32005513/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com