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

How to convert a Uni<Response> object into a String?

提问人:abhishek narayan 提问时间:8/30/2023 最后编辑:Federico klez Cullocaabhishek narayan 更新时间:8/30/2023 访问量:105

问:

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

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

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

cacheService(id, mapObj, responseObjectAsAString);

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

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

任何建议都会很有帮助。

java-stream quarkus tostring 叛变

评论

0赞 geoand 8/30/2023
什么?什么是?ResponseclinetService
0赞 abhishek narayan 8/30/2023
响应是 jakarta.ws.rs.core 库的一个类。clientService 是客户端服务提供的类的对象,其输出是 Uni<Response> 类型的对象。

答:

0赞 Rob Spoor 8/30/2023 #1

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

  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();

您也可以使用 代替 ,也可以将 放在 和 之间,以返回 代替。atMostindefinitelyasOptional()await()indefinitely()Optional<String>