如何将 Uni<Response> 对象转换为 String?

问题描述 投票:0回答:1

我正在使用 Quarkus 应用程序,该应用程序具有依赖的客户端服务,它将响应作为 Uni 对象类型传递给我

Uni<Response> response = clinetService.someMethod(id);

现在我需要将此响应作为字符串传递给另一个客户端缓存服务:

cacheService(id, mapObj, responseObjectAsAString);

所以我需要将这个转换后的字符串值传递给上面的方法。

我尝试了多种方法使用

ObjectMapper writeValueAsString(obj)
方法或 Gson 类
.toJson(obj)
将其序列化/转换为字符串,但没有任何效果。

任何建议都会非常有帮助。

java java-stream quarkus tostring mutiny
1个回答
0
投票

你实际上必须解决两个任务:

  1. Uni<Response>
    转换为
    Uni<String>
  2. Uni<String>
    转换为
    String

第一个可能就像这样简单:

Uni<String> body = response.map(r -> r.readEntity(String.class));

第二个可以使用

UniAwait
来完成。一个完整的例子:

String body = response.map(r -> r.readEntity(String.class))
        .await()
        .indefinitely();

您还可以使用

atMost
代替
indefinitely
,并且可以将
asOptional()
放在
await()
indefinitely()
之间以返回
Optional<String>

© www.soinside.com 2019 - 2024. All rights reserved.