当前位置: 首页 > 面试题库 >

强制Spring RestTemplate使用XmlConverter

张嘉熙
2023-03-14
问题内容

我们正在与第三方进行集成,该第三方发送的XML的Content-Type标头为text /
html。我们正计划使用Spring的RestTemplate将其映射到我们从xsds生成的类,但是RestTemplate无法找到合适的转换器用于内容。第三方拒绝修复内容类型,因为它可能破坏其他伙伴的集成。

Spring的RestTemplate是否有办法强制其使用特定的转换器?我们基本上只是在做以下事情:

RestTemplate restTemplate = new RestTemplate();
XmlClass xmlClass = restTemplate.getForObject("http://example.com/", XmlClass.class);

并得到以下异常

org.springframework.web.client.RestClientException:无法提取响应:在org.springframework.web.client找不到响应类型为[XmlClass]和内容类型为[text
/ html; charset = ISO-8859-1]的HttpMessageConverter。
HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:84)


问题答案:

我们实现的解决方案是增加一个Jaxb2RootElementHttpMessageConverterMediaType.TEXT_HTMLRestTemplate
HttpMessageConverters。这不是理想的方法,因为它创建了一个冗余的jaxb消息转换器,但它可以工作。

RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
Jaxb2RootElementHttpMessageConverter jaxbMessageConverter = new Jaxb2RootElementHttpMessageConverter();
List<MediaType> mediaTypes = new ArrayList<MediaType>();
mediaTypes.add(MediaType.TEXT_HTML);
jaxbMessageConverter.setSupportedMediaTypes(mediaTypes);
messageConverters.add(jaxbMessageConverter);
restTemplate.setMessageConverters(messageConverters);


 类似资料:
  • web API以,但是消息的格式就像是JSON一样,例如。 在Spring中,此消息使用RestTemplate处理,JSON自动映射到POJO, 这会产生以下错误: org.springframework.web.client.RestClientExcture:无法提取响应:没有找到适合响应类型[class api的HttpMessageConzer。ModelDto]和内容类型[文本/普通;

  • 我们正在与第三方集成,该第三方以text/html的形式发送带有content-type标题的xml。我们计划使用Spring的RestTemplate将其映射到我们从xsds生成的类,但是RestTemplate未能为内容找到合适的转换器。第三方拒绝修复内容类型,因为这可能会破坏其他合作伙伴的集成。 Spring的RestTemplate有办法强制它使用特定的转换器吗?我们基本上只是在做以下几点

  • 我看到这篇文章给出了使用WebClient将文件上传到ftp的简单想法。这很简单,但如何强制它使用SSL?

  • 问题内容: 我正在运行没有代理并且使用SSL的node.js express 3服务器。 我试图弄清楚如何强制所有连接通过https。 Google搜索向我显示了这一点: https://groups.google.com/forum/#!topic/express- js/Bm6yozgoDSY 当前没有办法强制执行https重定向,尽管这似乎有点奇怪。我们有一个仅使用https的应用程序,并且

  • 有没有强制slf4j使用特定的日志提供程序(在我的情况下是logback)?如在其文件中所述: 在类路径上找到多个绑定 我想要的只是通过JVM参数强制slf4j使用logback,例如,这样它就可以打印警告,并且我可以在将来排除JAR。

  • 我试图使用Auth在我的Kohana应用程序中强制使用强(er)密码,方法是使用以下正则表达式要求至少一个大写字母、一个小写字母、一个数字、一个非字母数字(特殊字符)和至少8个字符。 正则表达式正在工作,正如在Rubular上可以看到的那样。这是我在Kohana的Model\u Auth\u User中使用的代码,它扩展了ORM。 但是,当创建一个新的用户帐户或更改现有帐户的密码时,这个正则表达式