提问者:小点点

OpenFEGN解码CompletableFuture


我想使用异步模拟客户端(io. github.openfeu而不是spring-cloud d-starter-openfeign)来调用我的REST Api。这是我的代码:

interface FeignClient {
    @RequestLine("GET /") CompletableFuture<ResponseEntity> hello();
}

FeignClient feignClient = AsyncFeign.builder()
        .decoder(new GsonDecoder())
        .target(FeignClient.class, "http://localhost:8080");

assertEquals("hello", feignClient.hello().get());

这也是官方文件(https://github.com/OpenFeign/feign)上的说法。

使用Gson作为解码器,我得到以下错误

 Decode Failed making field 'java.util.concurrent.CompletableFuture#result' accessible; either change its visibility or write a custom TypeAdapter for its declaring type

我试图为ComletableFutures找到一个TypeAdapter,但我找不到。我不敢相信没有这样的TypeAdpater,我是唯一一个面临这个问题的人。

使用Jackson作为解码器,我得到另一个错误:

Feign Unrecognized token 'hello': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')

我在stackoverflow上发现了以下相关问题

  • fegnClient可以解码响应
  • 编码和解码响应实体,当使用飞行和SpringMVC?

但这些都没有帮助。

PS:HTTP请求使用JavaHTTP客户端工作正常。


共1个答案

匿名用户

正如相应的GitHub问题中讨论的那样,这似乎是与在12.0及更高版本中修复的飞行的bug。