问题标签 [http-message-converter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
147 浏览

json - 如果 canRead 和 canWrite 为 false,则跳过 HttpMessageConverter

我有一个自定义MappingJackson2HttpMessageConverter添加到转换器列表的顶部:

但是,有时我需要跳过这一点并使用 Spring default MappingJackson2HttpMessageConverter,例如当我想通过 Spring Boot Admin 更新应用程序的日志记录级别时。在我的自定义转换器中,我已经覆盖了两者canRead()canWrite()添加了调试日志行以查看返回的值是什么,并且false当我需要跳过时,我可以看到它们都返回。但是,使用默认值解析失败。如果我从列表中删除我的自定义转换器,那么默认值确实有效。

我的转换器列表如下所示:

我不明白为什么如果我的自定义转换器返回falseand canRead()canWrite()它不只是跳过这个并继续向下转换器列表,直到它到达默认的 Spring JSON 转换器。

0 投票
1 回答
201 浏览

json - Spring Boot http消息转换器有时会序列化null

在 Spring Boot 中,是否可以有许多不同版本的 gson 或 Jackson http 转换器,并在我需要特定类型的数据格式时动态使用它们?

0 投票
1 回答
1796 浏览

rest - 使用 RestTemplate 中的交换方法时,如何解决 HttpMessageConverterExtractor 错误?

我正在使用 Spring REST 模板从 REST 服务获取响应。我收到以下异常,但我无法找出问题所在。请找到以下详细信息。我错过了什么吗?

当我使用 Postman 尝试此操作时,我得到了正确的响应。

这里 AddFileServerBean 是请求:

例外

HttpMessageConverterExtractor 的源代码

我预期的响应对象

0 投票
2 回答
1555 浏览

java - org.springframework.web.client.RestClientException 中的错误:java.util.HashMap 没有 HttpMessageConverter

我在 org.springframework.web.client.RestClientException 中收到以下错误:使用 rest 模板时 java.util.HashMap 没有 HttpMessageConverter。有谁知道出了什么问题?

使用 java 1.8、spring 5.2.2、commons-logging 1.2。

错误

0 投票
1 回答
6577 浏览

json - 如何解决 Spring Boot 中“提取类型 [class com.*] 的响应时出错”?

您可能想跳到下面的我的 UPDATE 2

我有一个可以工作的 RestController,因为当我直接从浏览器访问它时,它会返回一个 JSON 响应。但是,当我在不同的有界上下文中从服务发送请求时,我收到错误消息:

这是我的代码:

休息控制器

休息客户端

配置

工人详情

WorkerDetails 也存在于包 com.path.to.contextone.ohs_pl 中;

我已经尝试了3天,阅读和调试,无济于事。调试器似乎显示当 RestTemplate 分析 WorkerDetails.class 时发生错误。

我还尝试在所有配置类中使用 ComponentScan,因为文件位于单独的包(有界上下文)中,但没有成功。

我可以只使用调用 IAcessRestClient 的类中的 UserDetailsRepository 来获取 WorkerDetails,但这会使两个不同的有界上下文依赖于相同的数据库模式。

任何帮助将不胜感激。我可以根据请求发布附加代码。

提前致谢

更新 @SB 要求输入参数。这是发送参数的类:

公司ServiceImpl

这是我直接访问 RestController 时得到的响应:

更新 2

注释掉 .anyRequest().authenticated() 并且一切运行正常!因此,它一直与 Spring Security 有关。多可惜。现在将尝试在启用安全性的情况下使事情正常进行。由于重定向到登录页面,我收到了 HTML 作为响应。正确实施了身份验证(带有基本身份验证的令牌请求)并且一切正常。

谢谢你们!

0 投票
1 回答
1148 浏览

java - 如何在 Spring Boot 中配置 gson?

Spring Boot 2

在 application.yml

现在我用自定义设置编写类Gson

我如何配置Spring Boot我的自定义Gson对象GsonUtil

0 投票
1 回答
697 浏览

spring-boot - Spring Boot / RabbitMQ 与 Jackson2JsonMessageConverter 不同的 content_type

我有一个服务使用不同的 RabbitMQ 队列的用例。

  • 在其中一个队列上有 JSON 编码数据,其中 content_type 标头设置为 application/json
  • 还有第二个队列,正在消费二进制数据,content_type 是application/octet-stream

在配置中有一个 MessageConverter 定义:

消费方法是这样声明的:

我的问题是 Jackson2JsonMessageConverter 抱怨application/octet-stream标头( Could not convert incoming message with content-type application/octet-stream 'json' keyword missing.),更糟糕的是,它正在将上述方法的 byte[] 响应编码为 JSON 和 base64。

问题:
如何确保 JSON 转换器不会触及我的 byte[] 响应并忽略具有“非 json”content_type 的消息?

0 投票
0 回答
929 浏览

spring-boot - 没有为响应类型 [class java.lang.Object] 和内容类型 [multipart/form-data;boundary=XXX;charset=UTF-8] 找到合适的 HttpMessageConverter

我正在从 UI 进行多部分表单数据发布调用以上传文件。从 UI,调用转到组件 A 控制器,您可以将其视为普通组件或总线,它只是读取流,通过 rest 调用将流传递到其他组件 B 控制器,该调用上传文件并在 json 中发送回有关上传文件的元数据格式。

问题:调用成功进行到组件 B 控制器,文件已上传,但是当组件 B 的响应到达组件 A 时,出现以下错误

“消息”:“无法提取响应:没有找到适合响应类型 [class java.lang.Object] 和内容类型 [multipart/form-data;boundary=HWhdmg6KNJw_kaP4wWnLyoAb9htc8StF4;charset=UTF-8] 的 HttpMessageConverter”

有人可以帮忙吗?

组件 A 代码

B组份代码

谢谢

0 投票
0 回答
1015 浏览

spring-boot - 将 RestTemplate 与 StreamingResponseBody 一起使用时出现 MessageConverter 问题

我们有一个使用 Spring Boot 实现的 REST API(服务器端)。此 API 正在流式传输 PDF 文件StreamingResponseBodyResponseEntity其内容类型为MediaType.APPLICATION_OCTET_STREAM.

我正在尝试在RestTemplate. 这个客户端应用程序又是一个 Spring Boot 应用程序。此客户端应用程序已存在,并且MappingJackson2HttpMessageConverter到目前为止支持两种支持媒体类型。

application/jsonapplication/x-www-form-urlencoded

我遵循了一些建议并尝试了这些项目

  1. 添加MediaType.APPLICATION_OCTET_STREAM到现有的 MappingJackson2HttpMessageConverter
  2. 添加ByteArrayHttpMessageConverter了默认支持MediaType.APPLICATION_OCTET_STREAM
  3. 添加ResourceHttpMessageConverter了哪些支持流式响应。

但是有了所有这些建议,我面临以下错误。目前,我不确定配置中是否缺少任何内容。团队,如果您可以将我重定向到实现此集成的简短示例或解决方案,那将非常有帮助。

当我尝试使用ByteArrayHttpMessageConverter(或)时出现以下错误ResourceHttpMessageConverter

使用当前实现更新问题: 这就是我正在创建的 resttemplate bean。

我的 API 客户端调用是

0 投票
0 回答
172 浏览

java - 如何使用 RestTemplate 使用 AbstractMessageConverter

1.总结问题

我正在尝试使用 RestTemplate 将逗号分隔值(CSV 格式的数据,而不是 csv 文件)读入 responseEntity(ResponseEntity<List<Map<String, Object>>> responseEntity)。

但是,我在下面收到错误。

org.springframework.web.client.RestClientException:提取类型 [java.util.List<java.util.Map<java.lang.String, java.lang.Object>>] 和内容类型 [text/csv] 的响应时出错;charset=utf-8]; 嵌套异常是 org.springframework.http.converter.HttpMessageNotReadableException:JSON 解析错误:无法反序列化java.util.ArrayList超出 VALUE_STRING 令牌的实例;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化java.util.ArrayList[Source: (PushbackInputStream); 行:1,列:1]

2.描述你尝试了什么

: 我试过一些Messageconverters。

从这里 https://www.logicbig.com/tutorials/spring-framework/spring-web-mvc/csv-msg-converter.html 我在那里得到了一些有用的信息并使用了一些。但我一直收到同样的错误。

3.适当的时候,显示一些代码

  • 我从这里收到该错误消息。

    responseEntity = restTemplate.exchange(apiUrl, httpMethod, requestEntity, new ParameterizedTypeReference<List<Map<String, Object>>>() { });