我需要发送一个包含头部信息Content-Type: application/camiant-msr-v2.0+xml
的GET请求。我期望从服务器端收到一个XML格式的响应。 我使用Postman测试了这个请求和响应,一切都很顺利。但是当我尝试在Spring中使用RestTemplate
时,我总是得到一个400错误的响应。Spring抛出的异常如下:
Jul 09, 2016 12:53:38 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/smp] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException: 400 Bad Request] with root cause
org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:641)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:597)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:475)
我的代码:
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Content-Type", "application/camiant-msr-v2.0+xml");
HttpEntity<?> entity = new HttpEntity<Object>(headers);
log.debug("request headers: " + entity.getHeaders());
ResponseEntity<String> response = restTemplate.exchange(queryUrl, HttpMethod.GET, entity, String.class);
调试信息显示标头为{Content-Type=[application/camiant-msr-v2.0+xml]}
,看起来是正确的。我想知道我的请求有什么问题,是否有一种方法可以查看请求以进行调试。
Accept
对我有效! 我认为这是因为Java库防止不规则使用,例如在GET请求中设置Content-Type
。非常感谢! - J Freebird