首页 > 解决方案 > Micronaut 客户端 - 具有自定义内容类型的 XML

问题描述

我正在开发一个 Micronaut 应用程序,该应用程序调用一些返回 XML 的遗留服务,其中一些需要自定义内容类型(例如,application/x-foobar+xml;version=1)。我可以通过执行以下操作设置请求的内容类型:

MediaType mediaType = new MediaType("application/x-foobar+xml;version=1");
FooBarRequest fooBarRequest = new FooBarRequest("baz");
httpClient.exchange(HttpRequest.POST("/foobar", fooBarRequest)
                .contentType(mediaType));

但我收到如下错误:

io.micronaut.http.client.exceptions.HttpClientException: Body [FooBarRequest@150fcdba] cannot be encoded to content type [application/x-foobar+xml;version=1]. No possible codecs or converters found.

有关于如何通过配置文件添加其他媒体类型以作为 JSON 或文本处理的文档,但这不适用于 XML。似乎应该有一种方法可以使用自定义媒体类型创建XmlMediaTypeCodec的子类并将其注册到MediaTypeCodecRegistry但该过程没有记录在任何地方。是否有其他人需要做类似的事情并想办法让自定义内容类型与 XML(或除文本和 JSON 之外的任何其他内容)一起使用?

标签: javaxmlmicronautmicronaut-client

解决方案


推荐阅读