spring - Spring WebFlux - 如何使用 WebClient 将响应打印为字符串而不是对象
问题描述
我有一个像下面这样的单声道:
private void getNodeDetail() {
Mono<String> mono = webClient.get()
.uri("/alfresco/api/-default-/public/alfresco/versions/1/nodes/f37b52a8-de40-414b-b64d-a958137e89e2")
.retrieve().bodyToMono(String.class);
System.out.println(mono.subscribe());
System.out.println(mono.block());
}
问题:第一个 sysoutreactor.core.publisher.LambdaSubscriber@77114efe
在使用 block() 时向我展示了它向我展示了我需要什么(json 字符串)。但我想使用 Aysnc 方法。那么,如上所述,这是否意味着我的目标系统(在这种情况下为 Alfresco)不支持异步调用?如果不是这种情况,我如何使用字符串格式在控制台上打印响应subscribe()
,就像block()
?
解决方案
subscribe()方法返回一个Disposable
对象:
public final Disposable subscribe()
在控制台上打印响应的预期方法是实际使用doOnNext
运算符,如下所示:
private void getNodeDetail() {
webClient.get()
.uri("/alfresco/api/-default-/public/alfresco/versions/1/nodes/f37b52a8-de40-414b-b64d-a958137e89e2")
.retrieve()
.bodyToMono(String.class)
.doOnNext(response -> System.out.println(response))
.subscribe();
}
推荐阅读
- formatting - Freemarker 格式 BigDecimal 到德语区域设置无法正常工作
- haskell - 堆栈“计划构建失败。”
- python - 使用 python 生成示例(鸢尾花)数据集
- java - sendKeys() 未通过 Selenium 和 Java 使用 WebDriverWait 插入完整值
- oracle - 如何修复“遇到以下符号之一时遇到符号“=:”plsql中的错误
- python - 为什么 pyglet.image 和 texture 这么重?
- html - 在图例标签中找不到文本
- python - 使用 saved_model 加载器从文件加载后的图形手术
- mobile - BuildContext + 小部件树
- node.js - Lambda 函数在使用 Promise 调用 dynamoDB 后结束,但没有返回错误?