自定义HttpMessageConverter是此错误的唯一选项吗?

时间:2019-03-24 16:59:29

标签: spring spring-boot resttemplate

Spring Boot应用程序中,我有一个通用类ApiCaller来调用不同的URL。我正在使用RestTemplate进行呼叫。拨打电话的详细信息来自我们的内部数据库。

 switch (serviceRequest.getMethod()) {
            case "POST":
              response = this.restTemplate.postForEntity(url,serviceRequestBody, Map.class).getBody();
              break;
            case "GET":
              response = this.restTemplate.getForEntity(url,serviceRequestBody, Map.class).getBody();
              break;
            default:
              break;
          }


可以看出,我将responseType作为Map.class发送,它将响应从api转换为地图。返回json响应的api效果很好。但是,它不适用于返回xml响应的资源。它给出以下异常:

no suitable HttpMessageConverter found for response type [interface java.util.Map] and content type [application/xml]
      at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:110) ~[spring-web-4.3.18.RELEASE.jar!/:4.3.18.RELEASE]
      at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:932) ~[spring-web-4.3.18.RELEASE.jar!/:4.3.18.RELEASE]
      at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:916) ~[spring-web-4.3.18.RELEASE.jar!/:4.3.18.RELEASE]
      at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:663) ~[spring-web-4.3.18.RELEASE.jar!/:4.3.18.RELEASE]
      at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:621) ~[spring-web-4.3.18.RELEASE.jar!/:4.3.18.RELEASE]
      at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:415) ~[spring-web-4.3.18.RELEASE.jar!/:4.3.18.RELEASE]

我经历了一些类似的问题,发现Custom messageConverter将解决此问题。有内置的HttpMessageConverter可以处理吗?

1 个答案:

答案 0 :(得分:1)

[a2enmod module][2]添加到HttpMessageConverter对象以转换任何类型的响应

RestTemplate