如何删除Spring的RestTemplate添加的某些HTTP头?

时间:2015-08-14 08:24:50

标签: java spring spring-mvc resttemplate

我遇到远程服务问题我无法控制对使用Spring的RestTemplate发送的请求的HTTP 400响应。使用curl发送的请求会被接受,因此我将它们与通过RestTemplate发送的请求进行了比较。特别是,Spring请求包含ConnectionContent-TypeContent-Length curl请求的标头{}}。如何配置Spring不添加它们?

2 个答案:

答案 0 :(得分:3)

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

<强> 1。创建自定义body div#site-wrapper { display: table; table-layout: fixed; position: absolute; height: 100%; width: 100%; top: 0; left: 0; right: 0; bottom: 0; } body div#site-wrapper > * { display: table-row; } div#site-content-wrapper { height: 100%; } footer div#footerContentWrapper { overflow: hidden; padding: 10px 50px 5px 50px; } 实施:

ClientHttpRequestInterceptor

<强> 2。然后将其添加到RestTemplate的拦截链:

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);
    }

}

答案 1 :(得分:0)

如果可以修改标头值,则表示可以进行以下修改

if ( response.getHeaders(headerName) != null ) // Header attribute headerName present in response
      response.getHeaders(headerName).add(""); // Header attribute headerName value set to empty