如何在Spring5中使用BodyInserters插入请求体?

时间:2017-12-26 11:09:27

标签: spring spring-boot

我正在使用Sping webflux模块并创建一个WebClient,请求uri并请求正文如下:

// create webclient
WebClient wc3 = WebClient.builder()
                            .baseUrl("http://localhost:8080")
                            .defaultCookie("key", "val")
                            .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
                            .build();
// set uri
WebClient.RequestBodySpec uri1 = wc3.method(HttpMethod.POST).uri("/getDocs");


//  set a request body
WebClient.RequestBodySpec requestSpec1 = WebClient.create().method(HttpMethod.POST).uri("/getDocs")
                                                .body(BodyInserters.fromPublisher(Mono.just("data")), String.class);

当我设置请求正文时,我收到以下编译错误:

Multiple markers at this line
    - Type mismatch: cannot convert from Mono<String> to P
    - The method fromPublisher(P, Class<T>) in the type BodyInserters is not applicable for the arguments 
     (Mono<String>)

java编辑器只显示“在文件中重命名”作为建议。

我不确定我是否完美地使用了BodyInserters。请建议。

1 个答案:

答案 0 :(得分:2)

必须是这样的

//  set a request body
WebClient.RequestHeadersSpec<?> data = WebClient.create().method(HttpMethod.POST).uri("/getDocs")
                                                .body(BodyInserters.fromPublisher(Mono.just("data"), String.class));