首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring - RestTemplate抛出InvalidMediaTypeException

Spring - RestTemplate抛出InvalidMediaTypeException
EN

Stack Overflow用户
提问于 2014-02-28 15:41:03
回答 3查看 6.8K关注 0票数 2

我正在开发Spring RestTemplate,在执行下面的代码后,我将获得InvalidMediaTypeException。当我在RestClient应用程序中执行相同的服务时,我得到了一个有效的响应。请帮帮忙。

代码语言:javascript
复制
ResponseEntity<String> response = restTemplate.exchange(restUrl,HttpMethod.valueOf(method), new HttpEntity<byte[]>(headers), String.class);

下面是堆栈跟踪。

代码语言:javascript
复制
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)
EN

回答 3

Stack Overflow用户

发布于 2014-02-28 16:26:53

这是因为客户端内容类型和服务器接受的内容类型不匹配。经典的"GET“方法默认的内容类型是"text/plain”,但是你的case server要求的内容不是"text/plain“。因此当你向你服务器发送请求时,你应该改变头的contenttype

票数 1
EN

Stack Overflow用户

发布于 2014-02-28 16:28:16

Spring非常严格地解析响应的Content-Type。正如错误消息所暗示的那样,Content-Type字段中不允许使用空格字符(除非用引号引起来)。您可以在RFC 2616 section 2.2RFC 2045 section 5.1中阅读有关它的信息。确保您呼叫的服务器符合这些规则。

票数 0
EN

Stack Overflow用户

发布于 2015-03-03 10:44:52

异常和堆栈跟踪说明了一切:

在客户端,你有:

代码语言:javascript
复制
ResponseEntity<String> response 
    = restTemplate.exchange(
        restUrl,
        HttpMethod.valueOf(method), 
        new HttpEntity<byte[]>(headers), // <-- contains bad "Content-Type" value
        String.class);

headers映射包含

代码语言:javascript
复制
"Content-Type" -> "multipart/mixed;boundary=simple boundary;charset=UTF-8"`

当请求到达服务器时,它会尝试使用MediaType#parseMediaType(String)解析此标头值,但空格字符无效,如异常消息所示:

Invalid token character ' ' in token "simple boundary"

下一步是调查headers是如何填充的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22089134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档