当前位置: 首页 > 知识库问答 >
问题:

选择要使用的消息转换器

闻人浩波
2023-03-14

我正在使用RestTemboard类发布到基于JSON的RESTful Web服务。我可以从留档中看到,可以有几个MessageConverters可用于RestTem板实例。我面临的问题是,客户端似乎出于某种原因选择使用基于XML的转换器。“内容类型”标头设置为应用程序/XML,消息主体包含我想作为JSON发送的对象的XML表示。如何最容易地配置我的RestTemboard实例,以便为我的请求使用MappingJackson2HttpMessageConzer?

共有2个答案

况经纬
2023-03-14

在您的应用程序上下文中有多个消息转换器。Spring很可能从所有可用的消息转换器中选择Jaxb2RootElementHttpMessageConverter,从而产生XML输出。

要指示Spring在其中使用MessageConverter,请在请求中添加内容类型头。例如,通过执行交换而不是get/postForEntity:

HttpHeaders headers = new HttpHeaders();
header.add("Content-Type", "application/json");

restTemplate.exchange("http://some.url", HttpMethod.GET new HttpEntity<>(headers), SomeObject.class);

或者将clienthtprequestinterceptor附加到RestTemplate(示例)。当您遵循该示例时,请确保使用此拦截器(正如在教程中一样,foo/bar被添加到响应头中):

@Override
public ClientHttpResponse intercept(HttpRequest httpRequest, byte[] bytes, ClientHttpRequestExecution clientHttpRequestExecution) throws IOException {
    httpRequest.getHeaders().set("Content-Type", "application/json");
    return clientHttpRequestExecution.execute(httpRequest, bytes);
}

施俊明
2023-03-14

如果你通过配置RestTemplateBuilder,你可以使用MessageConverters(org.springframework.http.converter.

参考:https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/web/client/RestTemplateBuilder.html#messageConverters-组织。springframework。http。转换器。HttpMessageConverter-

 类似资料:
  • 使用MVC Java编程配置方式时,如果你想替换Spring MVC提供的默认转换器,完全定制自己的HttpMessageConverter,这可以通过覆写configureMessageConverters()方法来实现。如果你只是想定制一下,或者想在默认转换器之外再添加其他的转换器,那么可以通过覆写extendMessageConverters()方法来实现。 下面是一段例子,它使用定制的Ob

  • 我有一个java客户机,它在队列中发送jms消息(“队列请求”)。该消息包含一个int属性(“id”),其中包含唯一的客户端id号。消息正在处理中,然后进入另一个队列(“队列响应”)。如何让客户机等到具有其id的消息在队列中,然后读取它。我曾尝试使用侦听器并实现onMessage,但当收到消息时,我如何停止侦听?

  • 我已经开发了2个Android应用程序。第一个,写入NFC标签,第二个读取我写的内容。 因此,对于*第一个应用程序(WriteNFC):我正在向标记中写入一条NDEF消息,该消息涉及两条NDEF记录:第一条记录是“文本”类型,第二条是“URL”类型。 第二个应用程序(ReadNFC):我扫描标签,以便读取NDEF消息,并显示它,但不是完全显示。我只在屏幕上显示第二条记录(URL)。我想做的是,当用

  • Spring JMS中的类具有setter方法,它允许提供我们想要的任何转换器。 对于带注释的消息侦听器,这很有意义,因为我们可以直接定义 spring将负责将消息转换并传递给这个侦听器。 因此,这对于带注释的听者来说显然是有意义的。我的问题是,设置消息转换器对非注释消息侦听器有用吗?类似于 从我在docs/javadocs中的搜索和对源代码的有限理解来看,我认为为这种情况设置消息转换器是没有帮助

  • 我正在使用JmsTemplate转换和发送事件对象。我已经向JmsTemplate注册了MappingJackson2MessageConverter。 我正在使用并从该主题获取消息。我不知道如何将此消息转换回我的对象? JmsTemplate的messageconverter是 我尝试调用并传递此消息对象进行转换,但没有成功。如何将我收到的消息对象转换为我想要的自定义对象?

  • ActiveMQ消息组是跨多个使用者进行负载平衡的一个非常好的特性。简而言之:消息流根据消息中嵌入的组标识符()在单个队列的多个使用者之间进行分区。(因此,使用者1将获得的所有消息,使用者2将获得的所有消息,依此类推) 现在,假设您有两个队列:和,并假设在流经这两个队列的消息中使用一致的S分类法。代理为on queue选择的使用者是否与代理为on queue选择的连接相同? 但是,我们能模拟这种行