调用返回XML格式接口报错

需要调用一个接口,接口返回的类型为XML,返回的报文格式为如下所示

<?xml version="1.0"?>
<GD_COMPANY_RES>
  <FieldTypes>
    <GD_COMPANY_RES class="R">
      <COMPANY type="CHAR"/>
      <EFFDT type="DATE"/> 
      <EFF_STATUS type="CHAR"/>
      <DESCR type="CHAR"/>
      <DESCRSHORT type="CHAR"/>
      <GD_OUT_DT type="DATE"/>
      <GD_GLS_FLAG type="CHAR"/>
    </GD_COMPANY_RES >
    <PSCAMA class="R">
      <LANGUAGE_CD type="CHAR"/>
      <AUDIT_ACTN type="CHAR"/>
      <BASE_LANGUAGE_CD type="CHAR"/>
      <MSG_SEQ_FLG type="CHAR"/>
      <PROCESS_INSTANCE type="NUMBER"/>
      <PUBLISH_RULE_ID type="CHAR"/>
      <MSGNODENAME type="CHAR"/>
    </PSCAMA>
  </FieldTypes>
</GD_COMPANY_RES>

发送请求函数为

 AjaxResult result = doExcuteXml(SERVER_PRE, "/PSIGW/HttpListeningConnector?MessageName=GD_COMPANY_REQ&From=PSFT_HR_REMOTE", xmlStr);

doExcuteXml如下:

private AjaxResult doExcuteXml(String SERVER_PRE, String suffixUrl, String xmlStr) {
        Map entityBody;
        String uri = SERVER_PRE + suffixUrl;
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type",  "text/html;charset=utf-8");
        headers.setContentType(MediaType.APPLICATION_XML);// XML
        ResponseEntity<Map> responseEntity = restTemplate.exchange(uri, HttpMethod.GET, new HttpEntity<>(xmlStr, headers), Map.class);
        logger.debug("responseEntity:" + responseEntity);
        entityBody = responseEntity.getBody();
        logger.debug("entityBody:" + entityBody);
        if (200 != (int) (entityBody.get("code"))) {
            return AjaxResult.error(String.valueOf(entityBody.get("msg")));
        }
        return AjaxResult.success(entityBody);
    }
}

这个接口是别人留下来的,现在调用doExcuteXml报错

 Could not extract response: no suitable HttpMessageConverter found for response type [interface java.util.Map] and content type [text/xml;charset=UTF-8]]

我看着逻辑挺对的,想问是哪里的问题

返回值不能转换为map类型吧,restTemplate返回值改为String试下

看看当前的HttpMessageConverter是否支持解析text/xml这种响应数据,如果有,debug看解析细节,没有就自己注入一个实现类,专门去解析text/xml