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