我正在开发Spring RestTemplate,在执行下面的代码后,我将获得InvalidMediaTypeException。当我在RestClient应用程序中执行相同的服务时,我得到了一个有效的响应。请帮帮忙。
ResponseEntity<String> response = restTemplate.exchange(restUrl,HttpMethod.valueOf(method), new HttpEntity<byte[]>(headers), String.class);下面是堆栈跟踪。
org.springframework.http.InvalidMediaTypeException: Invalid media type "multipart/mixed;boundary=simple boundary;charset=UTF-8": Invalid token character ' ' in token "simple boundary"
at org.springframework.http.MediaType.parseMediaType(MediaType.java:730)
at org.springframework.http.HttpHeaders.getContentType(HttpHeaders.java:305)
at org.springframework.web.client.HttpMessageConverterExtractor.getContentType(HttpMessageConverterExtractor.java:113)
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:84)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:687)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:673)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:491)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:446)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:393)
at com.restclient.helper.RestHelper.getResponse(RestHelper.java:28)发布于 2014-02-28 16:26:53
这是因为客户端内容类型和服务器接受的内容类型不匹配。经典的"GET“方法默认的内容类型是"text/plain”,但是你的case server要求的内容不是"text/plain“。因此当你向你服务器发送请求时,你应该改变头的contenttype
发布于 2014-02-28 16:28:16
Spring非常严格地解析响应的Content-Type。正如错误消息所暗示的那样,Content-Type字段中不允许使用空格字符(除非用引号引起来)。您可以在RFC 2616 section 2.2或RFC 2045 section 5.1中阅读有关它的信息。确保您呼叫的服务器符合这些规则。
发布于 2015-03-03 10:44:52
异常和堆栈跟踪说明了一切:
在客户端,你有:
ResponseEntity<String> response
= restTemplate.exchange(
restUrl,
HttpMethod.valueOf(method),
new HttpEntity<byte[]>(headers), // <-- contains bad "Content-Type" value
String.class);headers映射包含
"Content-Type" -> "multipart/mixed;boundary=simple boundary;charset=UTF-8"`当请求到达服务器时,它会尝试使用MediaType#parseMediaType(String)解析此标头值,但空格字符无效,如异常消息所示:
Invalid token character ' ' in token "simple boundary"
下一步是调查headers是如何填充的。
https://stackoverflow.com/questions/22089134
复制相似问题