问题标签 [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 投票
1 回答
293 浏览

spring-boot - SpringBoot Rest Controller 使用 JAXB Pojos + 自定义 Http 消息转换器 + Swagger-UI 同时支持 xml 和 json

当我引入自定义消息转换器时出现以下 Swagger 错误

该错误具有误导性,我猜它与转换器混淆了。有什么想法可以解决吗?

我跟着 - swagger-ui 不使用自定义 XML ObjectMapper(不走运)

背景:

我通过 xjc 从 xsd(s) 生成了 pojo。我有一个休息端点,需要同时支持 xml 和 json 的请求/响应

我们通过以下 [spring 文档][1] 部分使其工作:22.16.12 消息转换器

这是我在 MyConfig 中添加的

和我的控制器

0 投票
2 回答
710 浏览

java - 如何使用 Spring Boot 和 Jackson 序列化 Instant 而无需纳秒?

Spring 使用 Jackson 的 InstantSerializer 来写出我的 Instant 字段,如下所示:

不过,我不想要纳秒 - 只是毫秒。我猜想设置应用程序属性

会实现这一点,但这没有什么区别。

我如何告诉 Spring/Jackson 在序列化 Instant 时省略纳秒?

(我使用的是 Spring Boot 2.2.11.RELEASE)

更新

基于这个答案,我最终得到了它的工作。我不得不使用已弃用的 JSR310Module 而不是 JavaTimeModule,并重写 createContextual(...) 方法以强制它始终使用我的序列化程序。

这也有效(基于下面 Volodya 的回答):

0 投票
0 回答
29 浏览

spring-boot - Springfox 包装响应模型

我有一个带有端点的 springboot 应用程序:

MyResponse.class

我还有一个自定义的 HttpMessageConverter,它将我的所有响应包装到一个BaseResponse模型中,在有效负载字段中序列化响应:

基本响应 .class

这一切都在运行时有效,但我不知道如何告诉 springfox 我的BaseResponseMyResponse类型

使用@ApiResponse注释我可以使用BaseResponse.classMyResponse.class,它们都生成一个不完整的模型,因为如果我使用 BaseResponse有效负载字段被创建为一个空对象,如果我使用 MyResponse.class 包装对象是不存在。

我怎样才能自动生成这样的模型?:

0 投票
0 回答
22 浏览

spring - 试图在两个服务之间传递 DTO,但出现异常:没有合适的 HttpMessageConverter(尽管显然有)

我有两个服务(Spring Boot 应用程序,在 IDE 中运行)——服务器和客户端。两者都为客户提供相同的 DTO 类。服务器 GET 端点如下所示:

我正在通过restTemplate从客户端向该端点执行请求,期待我的DTO:

但是面对这个错误(实际上是异常)

我很困惑,因为我当然在关注一切正常。客户端显然正在接收 JSON 形式的响应,因为:

所以我想问题出在转换器的某个地方。我从我的 RestTemplate 中得到了一个转换器列表,并打印了它们:

最后一个用于转换 JSON。所以我看不出问题出在哪里。

0 投票
1 回答
223 浏览

spring - 无法提取响应:没有找到适合响应类型和内容类型的 HttpMessageConverter [binary/octet-stream]

所以我通过 RestTemplate Link 使用来自这个 URL 的 JSON 响应:

我的产品 POJO:

现在,当我使用 restTemplate 将这个 Json 对象数组存储在 ProductModel [] 中时。

我收到此错误

当我通过邮递员通过 POST 请求将相同的 JSON 对象传递到 REST 端点时。它能够处理该请求。这都是与内容类型相关的游戏吗?请帮忙,我接下来要做什么。我不知道 。任何帮助表示赞赏

0 投票
0 回答
187 浏览

spring-mvc - 无法提取响应:没有找到适合响应类型 [boolean] 和内容类型 [text/html;charset=iso-8859-1] 的 HttpMessageConverter

我有两个系统都是相同的。部署了相同的代码,并且所有文件夹对于依赖项都是相同的。

但是,我在一个系统中收到此错误-

org.springframework.web.client.RestClientException:无法提取响应:在 org.springframework.web.client 中找不到响应类型 [boolean] 和内容类型 [text/html;charset=iso-8859-1] 的合适 HttpMessageConverter。 HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:119) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:727) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:681) at org .springframework.web.client.RestTemplate.getForObject(RestTemplate.java:329) 在 com.company1.project1.security.utils.RestUtils.isUserLocked(RestUtils.java:245)

我们在许多其他系统上部署了相同的代码,但从未遇到过这个问题。获得此异常的可能原因是什么。

有什么线索吗?感谢你的帮助。

0 投票
0 回答
37 浏览

xml - java11和springboot附带了重复的xml元素

问题:

我在 SpringBoot 应用程序中创建了一个端点,当我用邮递员点击端点时,我得到了所有“列表”数据类型的重复节点。示例“类别关系”

输出


我的 Gradle 依赖项:
实现 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.2'
实现 'org.glassfish.jaxb:jaxb-runtime:2.3.3'
运行时 'com.sun.xml.bind: jaxb-impl:3.0.0'
实现'javax.xml.bind:jaxb-api:2.3.1'


Spring 日志: 22:45:10.974 调试 javax.xml.bind - 搜索 jaxb.properties 22:45:10.975 调试 javax.xml.bind - 检查系统属性 javax.xml.bind.JAXBContextFactory 22:45:10.975 调试 javax.xml .bind - 未找到 22:45:10.975 调试 javax.xml.bind - 检查系统属性 javax.xml.bind.context.factory 22:45:10.975 调试 javax.xml.bind - 未找到 22:45:10.975 调试 javax .xml.bind - 检查系统属性 javax.xml.bind.JAXBContext 22:45:10.976 调试 javax.xml.bind - 未找到 22:45:10.981 调试 javax.xml.bind - 使用的 ServiceProvider 加载工具;返回对象 [com.sun.xml.bind.v2.JAXBContextFactory] ​​22:45:10.987 调试 csxbv2.ContextFactory -属性 com.sun.xml.bind.XmlAccessorFactory 未激活。 使用 JAXB 的实现 22:45:11.293 调试 csxbv2.util.XmlFactory - SAXParserFactory 实例:com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl@363e0b6c 22:45:11.330 调试 oswsmmaRequestResponseBodyMethodProcessor - 使用 'application/xml',给定 [application/xml] 并支持 [application/xml]

我尝试使用 jaxb 手动转换并删除重复节点并给我正确的响应。

为什么spring在响应时使用“com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl”作为默认xml转换器?我怀疑这个解析器的问题。为什么它说 Property com.sun.xml.bind.XmlAccessorFactoryis not active?

0 投票
0 回答
20 浏览

macos - 执行 curl 时没有合适的 HttpMessageConverter

我有一个 gradle 构建脚本,其任务是使用 curl 更新一些数据。将我的操作系统从 Windows 切换到 MacOS 后,我无法再运行该任务。我已经将引号从双引号更改为单引号。我还在它工作的终端中测试了 curl 命令(我从 gradle 任务中获取了命令并在终端中运行它)。不幸的是,当我在 gradle 中运行任务时,出现以下错误:
No suitable HttpMessageConverter found to read request body into object of type class <> from request with content type of application/x-www-form-urlencoded;charset=UTF-8!

似乎内容类型没有转移到 curl 语句。

这是我的代码:

我已经尝试使用 exec 但它也不起作用。

有谁知道如何解决这个问题?

0 投票
0 回答
63 浏览

java - 我收到以下错误 org.springframework.http.converter.HttpMessageNotReadableException:

错误:

org.springframework.http.converter.HttpMessageNotReadableException:无法读取文档:意外字符(“<”(代码 60)):预期有效值(数字、字符串、数组、对象、“真”、“假”或“空” ')

我试图从 MongoDB 集合中获取包含 pdf 的 list<byte[]> ,并在获取此字节数组列表后通过交叉调用将其传递给另一个 jar。

获取方法如下:

一旦控件到达内部get方法,可以做些什么来解决我得到的错误?

0 投票
0 回答
23 浏览

spring-mvc - feign.codec.EncodeException:无法写入请求:当我尝试调用 feign 方法时,找不到适合请求类型的 HttpMessageConverter

我无法调用在 FeignClient 中声明的 POST 方法

我在我的服务中调用此方法并构建 FeignClientDto 对象(“feign”是我的客户端的 Autowired 构造函数参数)

相关依赖:

我已经尝试阅读多个帖子,遗憾的是我没有找到解决方案,手动配置编码器没有帮助,或者我没有做对。