【问题标题】:org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/xml;charset=UTF-8' not supportedorg.springframework.web.HttpMediaTypeNotSupportedException:不支持内容类型'application/xml;charset=UTF-8'
【发布时间】:2015-03-26 23:12:24
【问题描述】:

当我调用休息服务时,我遇到了异常。

org.springframework.web.HttpMediaTypeNotSupportedException:内容 类型 'application/xml;charset=UTF-8' 不支持 在 org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:152) [spring-webmvc-4.1.1.RELEASE.jar:4.1.1.RELEASE] 在 org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:181) [spring-webmvc-4.1.1.RELEASE.jar:4.1.1.RELEASE] 在

代码

    //    This method calls the rest service


        @Override
        public TransactionSearchResults callSearchTransactions(TransactionSearchCriteria criteria, int page, int size) {

        HttpEntity<TransactionSearchCriteria> requestEntity = new HttpEntity<TransactionSearchCriteria>(criteria, getCommonHeaders(new HttpHeaders()));

        Map<String, Integer> params = new HashMap<String, Integer>();
        params.put("size", size);
        params.put("page", page);

        return restTemplate.exchange(urlBase + "/transaction?size={size}&page={page}", HttpMethod.POST, requestEntity, TransactionSearchResults.class, params).getBody();

        }

    // Api which caters to rest call

        @Controller
        @RequestMapping("/transaction")
        public class TransactionStatusController extends BaseController { ... }

    //Controller method for rest call 
        @ResponseBody
        @RequestMapping(produces = { MediaType.APPLICATION_JSON_VALUE }, method = RequestMethod.POST , consumes = MediaType.APPLICATION_JSON_VALUE)
            public com.rest.TransactionSearchResults searchTransactions(@RequestParam(value = "page", required = false) Integer page,
// Using request Param to retireve criteria                         
@RequestParam(value = "size", required = false) Integer size, @Valid     @RequestBody com.rest.TransactionSearchCriteria criteria) {
// This gets relevant results and return it to rest call
    return convert(transactionService.search(convert(criteria), page, size));

}

【问题讨论】:

    标签: java spring utf-8


    【解决方案1】:

    你的控制器被实现为只接受 JSON 值,即consumes = MediaType.APPLICATION_JSON_VALUE;因此错误明确指出不支持 XML。

    如果要使用 XML,请更新控制器以包含 MediaType.APPLICATION_XMLMediaType.APPLICATION_XML_Value

    【讨论】:

    • 我尝试从控制器中删除 consumes 属性,但仍然显示相同的错误。此外,没有任何后期休息电话在该项目中起作用。看起来 httpMessageconverters 有问题。
    • 请发布您的相关配置(即 spring、maven 等)
    【解决方案2】:

    问题已解决。下面给出的 pom 条目与杰克逊核心库冲突。刚刚删除它,一切正常。

    <dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.4.3</version>
    </dependency>
    

    【讨论】:

      猜你喜欢
      • 2015-11-01
      • 2014-09-18
      • 2018-07-24
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 2019-11-23
      • 2018-08-06
      • 1970-01-01
      相关资源
      最近更新 更多