Psy*_*nch 6 java spring spring-mvc resttemplate
我遇到了远程服务的问题我无法控制对使用Spring的RestTemplate发送的请求的HTTP 400响应.使用curlget 发送的请求虽然已被接受,因此我将它们与通过RestTemplate发送的请求进行了比较.特别是春天的要求有头Connection,Content-Type以及Content-Length其curl请求不.如何配置Spring不添加它们?
很可能这实际上并不是问题所在。我的猜测是您没有指定正确的消息转换器。但这里有一种删除标头的技术,以便您可以确认:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
2.然后添加到RestTemplate的拦截器链中:
@Bean
public RestTemplate restTemplate()
{
RestTemplate restTemplate = new RestTemplate();
restTemplate.setInterceptors(Arrays.asList(new CustomHttpRequestInterceptor(), new LoggingRequestInterceptor()));
return restTemplate;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9671 次 |
| 最近记录: |