首页 > 解决方案 > 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()

标签: springspring-bootspring-webfluxalfrescoproject-reactor

解决方案


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

推荐阅读