【问题标题】:Spring RestTemplate throws InvalidMediaTypeExceptionSpring RestTemplate 抛出 InvalidMediaTypeException
【发布时间】:2016-09-23 09:51:57
【问题描述】:

我是 Spring Rest 的新手,我尝试从 web 服务中获取 xml,但在执行以下代码后它抛出 InvalidMediaTypeException:

restTemplate.getForObject("http://www.dictionaryapi.com/api/v1/references/learners/xml/{word}?key={key}",String.class,uriVariables);

WebService 返回 xml 文档,我首先认为这可能是问题所在,但另一个 WebService(该 url 不包含“xml”作为路径)效果很好。

堆栈跟踪:

Exception in thread "main" org.springframework.http.InvalidMediaTypeException: Invalid mime type "xml": does not contain '/'
at org.springframework.http.MediaType.parseMediaType(MediaType.java:385)
at org.springframework.http.HttpHeaders.getContentType(HttpHeaders.java:722)
at org.springframework.web.client.HttpMessageConverterExtractor.getContentType(HttpMessageConverterExtractor.java:114)
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:85)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:835)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:819)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:599)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)
at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:384)

那么我如何与在其 url 路径中包含单词“xml”的 WebServices 交换数据。

【问题讨论】:

  • 我认为,但我可能错了,你得到的堆栈不是由URI中的“xml”引起的,我们可以看到“webService”方法吗?
  • 突然,它是第三方WebService,所以如果我在dictionaryapi.com/api/v1/references/learners/xml/…上发出请求,我会收到这个结果,例如“thomas-bayer.com/sqlrest/CUSTOMER”上的请求是有效的。
  • url 参数中的 xml 可能不是这里的问题。您在 uri 变量中传递的服务或数据应该有问题
  • 我找到了答案,这是“媒体类型”中的错误。此 3-d 方 WebService 的提供者安装类型为“xml”,但安装类型为“application/xml”或“text/xml”。非常感谢您的所有回答。

标签: java spring rest


【解决方案1】:

这里的问题是服务返回的响应内容类型混乱,特别是xml。您需要配置 Spring 来处理这个问题,因为理智的人(和服务)使用 application/xml 代替。查看this 答案以获取自定义MediaType 设置。

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    相关资源
    最近更新 更多