我正在使用 Quarkus 应用程序,该应用程序具有依赖的客户端服务,它将响应作为 Uni 对象类型传递给我
Uni<Response> response = clinetService.someMethod(id);
现在我需要将此响应作为字符串传递给另一个客户端缓存服务:
cacheService(id, mapObj, responseObjectAsAString);
所以我需要将这个转换后的字符串值传递给上面的方法。
我尝试了多种方法使用
ObjectMapper writeValueAsString(obj)
方法或 Gson 类 .toJson(obj)
将其序列化/转换为字符串,但没有任何效果。
任何建议都会非常有帮助。
你实际上必须解决两个任务:
Uni<Response>
转换为 Uni<String>
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>
。