首页 > 解决方案 > 如何使用 Spring Boot Web 客户端为内容类型 application/x-www-form-urlencoded 的表单数据发布请求

问题描述

如何使用 Spring Bootwebclient发布application/x-www-form-urlencoded 内容类型为“application/x-www-form-urlencoded”的示例 curl 请求的请求

--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'username=XXXX' \
--data-urlencode 'password=XXXX'

如何使用 webclient 发送相同的请求?

标签: spring-bootspring-webfluxspring-webclient

解决方案


我们可以BodyInserters.fromFormData用于此目的

webClient client = WebClient.builder()
        .baseUrl("SOME-BASE-URL")
        .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE)
        .build();

return client.post()
        .uri("SOME-URI)
        .body(BodyInserters.fromFormData("username", "SOME-USERNAME")
                .with("password", "SONE-PASSWORD"))
                .retrieve()
                .bodyToFlux(SomeClass.class)
                .onErrorMap(e -> new MyException("messahe",e))
        .blockLast();
    

推荐阅读