webclient post java_SpringBoot - 网络请求客户端WebClient使用详解3(POST请求)

四、POST 请求

1,发送一个 JSON 格式数据(使用 json 字符串)

(1)下面代码使用 post方式发送一个 json格式的字符串,并将结果打印出来(以字符串的形式)。

@RestController

public class HelloController {

// 创建 WebClient 对象

private WebClient webClient = WebClient.builder()

.baseUrl("http://jsonplaceholder.typicode.com")

.build();

@GetMapping("/test")

public void test() {

// 需要提交的 json 字符串

String jsonStr = "{\"userId\": 222,\"title\": \"abc\",\"body\": \"航歌\"}";

// 发送请求

Mono mono = webClient

.post() // POST 请求

.uri("/posts") // 请求路径

.contentType(MediaType.APPLICATION_JSON_UTF8)

.body(BodyInserters.fromObject(jsonStr))

.retrieve() // 获取响应体

.bodyToMono(String.class); //响应数据类型转换

// 输出结果

System.out.println(mono.block());

return;

}

}

(2)运行结果如下:

072ec7cfb88437ccdd4524bd5e8ded5e.png

2,发送一个 JSON 格式数据(使用 Java Bean)

(1)下面代码使用 post方式发送一个 Bean对象,并将结果打印出来(以字符串的形式)。结果同上面是一样的:

@RestController

public class HelloController {

// 创建 WebClient 对象

private WebClient webClient = WebClient.builder()

.ba

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用SpringBoot创建客户端使用HTTP/2请求接口的步骤: 1. 添加maven依赖 首先在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-tcnative-boringssl-static</artifactId> <version>2.0.34.Final</version> </dependency> ``` 这些依赖将为你提供使用HTTP/2的必要组件。 2. 创建WebClient对象 WebClient是Spring WebFlux提供的用于发送HTTP请求客户端库,可以非常方便地发送HTTP请求并处理响应。创建WebClient对象需要使用ReactorNetty的HttpClient,并将其设置到WebClient的构造函数中。在设置HttpClient时,需要启用对HTTP/2的支持。 ```java import io.netty.handler.ssl.SslContextBuilder; import io.netty.handler.ssl.util.InsecureTrustManagerFactory; import org.springframework.http.client.reactive.ReactorClientHttpConnector; import org.springframework.web.reactive.function.client.WebClient; import reactor.netty.http.client.HttpClient; import javax.net.ssl.SSLException; import java.time.Duration; public class MyClient { public static void main(String[] args) throws SSLException { SslContextBuilder sslContextBuilder = SslContextBuilder.forClient() .trustManager(InsecureTrustManagerFactory.INSTANCE); HttpClient httpClient = HttpClient.create() .secure(sslContextSpec -> sslContextSpec.sslContext(sslContextBuilder)) .protocol(HttpClient.HttpProtocol.H2) .responseTimeout(Duration.ofSeconds(5)); ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient); WebClient client = WebClient.builder() .clientConnector(connector) .build(); // 使用client发送请求 } } ``` 在这里,我们首先使用SslContextBuilder创建一个SSL上下文,以便我们可以在不验证服务器证书的情况下与服务器建立安全连接。然后,我们使用HttpClient.create()创建一个HttpClient实例,并启用了对HTTP/2的支持,同时设置了响应超时时间。接下来,我们使用ReactorClientHttpConnector将HttpClient连接到WebClient中。最后,我们使用WebClient.builder()创建一个WebClient实例,并将ReactorClientHttpConnector设置为其连接器。 3. 发送HTTP请求 创建WebClient对象后,我们可以使用其get()、post()、put()、delete()等方法发送HTTP请求。 例如,我们可以使用以下代码向http://localhost:8080/hello发送一个HTTP GET请求: ```java Mono<String> result = client.get() .uri("http://localhost:8080/hello") .retrieve() .bodyToMono(String.class); result.subscribe(System.out::println); ``` 在这里,我们使用WebClient向http://localhost:8080/hello发送了一个HTTP GET请求,并将响应体转换为Mono<String>对象,然后异步订阅它并打印结果。 总之,以上是使用SpringBoot创建客户端使用HTTP/2请求接口的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值