首页 > 解决方案 > WebFlux 总是从 WebClient 获得空的正文发布

问题描述

我正在尝试将 Flux 从 webclient 发布到服务器,但我总是得到空的请求正文。

路由器:

@Bean
    public RouterFunction<ServerResponse> procces(LetterHandler handler){
        return RouterFunctions.route(POST("/letter").and(accept(APPLICATION_STREAM_JSON)).and(contentType(APPLICATION_STREAM_JSON)), handler::handle);
    }

处理方法:

@Override
    public Mono<ServerResponse> handle(ServerRequest serverRequest) {
        serverRequest.body(toFlux(Letter.class)).doOnEach(letterSignal -> System.out.println(letterSignal)).switchIfEmpty(subscriber -> System.out.println("empty")).subscribe();
        //serverRequest.bodyToFlux(Letter.class).doOnEach(letterSignal -> System.out.println(letterSignal)).subscribe();
}

WebClient - 字段:

private final WebClient webClient = WebClient.builder()
            .baseUrl("http://localhost:8081")
           // .defaultHeader(MediaType.APPLICATION_JSON_VALUE)
            .build();

WebClient - 请求:

public void send(Flux letters) {

    webClient.post().uri("/letter")
            .accept(MediaType.APPLICATION_STREAM_JSON)
            .contentType(MediaType.APPLICATION_STREAM_JSON)
            .body(letters, Letter.class)
            //.body(BodyInserters.fromObject(letter))
           // .retrieve().bodyToMono(void.class).subscribe();
            .exchange().subscribe();
}

为什么我总是收到空请求?我将不胜感激任何帮助。提前致谢!

标签: javaspring-bootspring-webfluxproject-reactor

解决方案


推荐阅读