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

Spring Cloud Open Feign:ByteArrayResource的解码器

澹台锐
2023-03-14

我在一个接口中定义了一个Spring Boot Restendpoint来下载一个映像

@GetMapping(value = "/{name}")
ResponseEntity<ByteArrayResource> getFileByName(@PathVariable("name") String name);
Feign.builder()
    .client(new ApacheHttpClient())
    .contract(new SpringMvcContract())
    .decoder(new JacksonDecoder())
    .encoder(new JacksonEncoder())  
    .target(clazz, url)
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('�' (code 65533 / 0xfffd)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: (BufferedReader); line: 1, column: 2]

共有1个答案

冉德元
2023-03-14

我写了自己的小解码器,问题就解决了。下面是解码器

private Decoder byteArrayResourceDecoder() {
        Decoder decoder = (response, type) -> {
            if (type instanceof Class && ByteArrayResource.class.isAssignableFrom((Class) type)) {
                return StreamUtils.copyToByteArray(response.body().asInputStream());
            }
            return new JacksonDecoder().decode(response, type);
        };

        return new ResponseEntityDecoder(decoder);
    }

希望这个模板能帮助其他有类似问题的人。会期望Feign拥有支持所有返回类型的解码器。

 类似资料:
  • 我们将只实现 Memcached 协议的一个子集,这足够我们进行添加、检索、删除对象;在 Memcached 中是通过执行 SET,GET,DELETE 命令来实现的。Memcached 支持很多其他的命令,但我们只使用其中三个命令,简单的东西,我们才会理解的更清楚。 Memcached 有一个二进制和纯文本协议,它们都可以用来与 Memcached 服务器通信,使用什么类型的协议取决于服务器支持

  • 我们已经在前两节中表征并变换了不定长的输入序列。但在自然语言处理的很多应用中,输入和输出都可以是不定长序列。以机器翻译为例,输入可以是一段不定长的英语文本序列,输出可以是一段不定长的法语文本序列,例如 英语输入:“They”、“are”、“watching”、“.” 法语输出:“Ils”、“regardent”、“.” 当输入和输出都是不定长序列时,我们可以使用编码器—解码器(encoder-de

  • 本节,会提供几个类用于 decoder 的实现,并介绍一些具体的例子,这些例子会告诉你什么时候可能用到他们以及怎么来用他们。 Netty 提供了丰富的解码器抽象基类,我们可以很容易的实现这些基类来自定义解码器。主要分两类: 解码字节到消息(ByteToMessageDecoder 和 ReplayingDecoder) 解码消息到消息(MessageToMessageDecoder) decode

  • 11 解码器 解码器是让FFmpeg能对多媒体流进行解码的配置元素。 默认在编译FFmpeg时所有(内置)有效的解码器都会自动支持。如果解码器需要特别扩展库,则需要手动通过--enable-lib选项来进行支持。可以在配置编译项目中通过--list-decoders了解所有有效解码器(包括需要扩展库的)。 也可以通过在配置中采用--disable-decoders选项单独禁用某个解码器。--ena

  • 我正在尝试显示从一个android设备到另一个android设备的实时预览。这是我所做的, 发送器 ;:1.摄像机帧(YUV)->2.MediaCodec(编码h264字节[])->3.MediaMuxer->4.MP4

  • 本文向大家介绍浅谈编码,解码,乱码的问题,包括了浅谈编码,解码,乱码的问题的使用技巧和注意事项,需要的朋友参考一下 在开发的过程中,我们不可避免的会遇到各种各样的编码,解码,或者乱码问题,很多时候,我们可以正常的解决问题,但是说实在的,我们有可能并不清楚问题到底是怎么被解决的,秉承知其然,更要知其所以然的理念,经过一番研究,就有了下面的这篇文章,鉴于本人功力尚浅,有错误请给予纠正 :-) 编码解码

  • 看看文档,它说: https://netty.io/4.0/api/io/netty/channel/ChannelPipeline.html 假设用户在管道中有一个或多个ChannelHandlers来接收I/O事件(例如读取)和请求I/O操作(例如写入和关闭)。例如,一个典型的服务器在每个通道的管道中都有以下处理程序,但是根据协议和业务逻辑的复杂性和特征,这些处理程序可能会有所不同: 协议解码

  • 我有一些关于位图解码的问题。 > 当我尝试使用BitMapFactory.DecodeByteArray从Byte[]数组解码位图时,结果位图中的param Byte[]和mBuffer Byte[]有什么不同。当函数返回时,位图仍然保留对Byte[]参数的引用吗? 当我使用以下代码从sdcard的jpg文件解码位图时: 该jpg文件分辨率为10800*5400,大小为13.82M,结果位图不为空