网站创建后台,网站建设案例收费吗,手机壁纸网站源码,做网站模板的海报尺寸多少目录 一#xff0c;序言二#xff0c;简单示例1. 引入依赖2. 日志配置3. 调用代码4. 运行结果 三#xff0c;完整代码 一#xff0c;序言
WebClient是Spring WebFlux模块提供的一个非阻塞的基于响应式编程的进行Http请求的客户端工具#xff0c;从Spring5.0开始WebClient… 目录 一序言二简单示例1. 引入依赖2. 日志配置3. 调用代码4. 运行结果 三完整代码 一序言
WebClient是Spring WebFlux模块提供的一个非阻塞的基于响应式编程的进行Http请求的客户端工具从Spring5.0开始WebClient作为RestTemplete的替代品有更好的响应式能力支持异步调用可以在Spring项目中实现网络请求。
二简单示例
1. 引入依赖
pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.fly/groupIdartifactIdweb-client/artifactIdversion0.0.1/versionnamebase/namepropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingjava.version1.8/java.versionskipTeststrue/skipTests/propertiesdependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-webflux/artifactIdversion5.2.3.RELEASE/version/dependencydependencygroupIdio.projectreactor.netty/groupIdartifactIdreactor-netty/artifactIdversion0.9.4.RELEASE/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-slf4j-impl/artifactIdversion2.12.1/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactIdversion3.10/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.12/versionscopeprovided/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.10.1/versionconfigurationsource1.8/sourcetarget1.8/targetencodingUTF-8/encoding/configuration/plugin/plugins/build
/project2. 日志配置
log4j2.xml
?xml version1.0 encodingUTF-8?
configuration statusoff monitorInterval0appendersconsole nameConsole targetsystem_outpatternLayout pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n //console/appendersloggersroot levelINFOappender-ref refConsole //root/loggers
/configuration3. 调用代码 import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.client.WebClient;import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Mono;/*** WebClient是RestTemplete的替代品有更好的响应式能力支持异步调用br* * https://blog.csdn.net/zzhongcy/article/details/105412842* */
Slf4j
public class RunWebClient
{public static void main(String[] args)throws InterruptedException{// 默认使用nettyWebClient webClient WebClient.builder().codecs(configurer - configurer.defaultCodecs().maxInMemorySize(-1)) // 缓冲区默认256k解决报错Exceeded limit on max bytes to buffer : 262144.build();// block转换为同步调用MonoString resp webClient.get().uri(https://00fly.online/upload/ids).acceptCharset(StandardCharsets.UTF_8).accept(MediaType.TEXT_HTML).retrieve().bodyToMono(String.class);String[] idArray StringUtils.split(resp.block(), \r\n);log.info(★★★★★★★★ ids: {}, Arrays.asList(idArray));// 异步调用for (String id : idArray){MonoString result webClient.get().uri(https://blog.csdn.net/qq_16127313/article/details/{id}, id).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).acceptCharset(StandardCharsets.UTF_8).accept(MediaType.TEXT_HTML).retrieve().bodyToMono(String.class);result.subscribe(body - log.info({} process complted, id), e - log.error(e.getMessage()));}log.info(异步请求已提交...);TimeUnit.SECONDS.sleep(10); // 重要等待异步调用完成}
}
4. 运行结果 三完整代码
如何使用下面的备份文件恢复成原始的项目代码请移步查阅神奇代码恢复工具
//goto pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.fly/groupIdartifactIdweb-client/artifactIdversion0.0.1/versionnamebase/namepropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingjava.version1.8/java.versionskipTeststrue/skipTests/propertiesdependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-webflux/artifactIdversion5.2.3.RELEASE/version/dependencydependencygroupIdio.projectreactor.netty/groupIdartifactIdreactor-netty/artifactIdversion0.9.4.RELEASE/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-slf4j-impl/artifactIdversion2.12.1/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactIdversion3.10/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.12/versionscopeprovided/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.10.1/versionconfigurationsource1.8/sourcetarget1.8/targetencodingUTF-8/encoding/configuration/plugin/plugins/build
/project
//goto src\main\java\com\fly\http\RunWebClient.java
package com.fly.http;import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.client.WebClient;import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Mono;/*** WebClient是RestTemplete的替代品有更好的响应式能力支持异步调用br* * https://blog.csdn.net/zzhongcy/article/details/105412842* */
Slf4j
public class RunWebClient
{public static void main(String[] args)throws InterruptedException{// 默认使用nettyWebClient webClient WebClient.builder().codecs(configurer - configurer.defaultCodecs().maxInMemorySize(-1)) // 缓冲区默认256k解决报错Exceeded limit on max bytes to buffer : 262144.build();// block转换为同步调用MonoString resp webClient.get().uri(https://00fly.online/upload/ids).acceptCharset(StandardCharsets.UTF_8).accept(MediaType.TEXT_HTML).retrieve().bodyToMono(String.class);String[] idArray StringUtils.split(resp.block(), \r\n);log.info(★★★★★★★★ ids: {}, Arrays.asList(idArray));// 异步调用for (String id : idArray){MonoString result webClient.get().uri(https://blog.csdn.net/qq_16127313/article/details/{id}, id).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).acceptCharset(StandardCharsets.UTF_8).accept(MediaType.TEXT_HTML).retrieve().bodyToMono(String.class);result.subscribe(body - log.info({} process complted, id), e - log.error(e.getMessage()));}log.info(异步请求已提交...);TimeUnit.SECONDS.sleep(10); // 重要等待异步调用完成}
}
//goto src\main\resources\log4j2.xml
?xml version1.0 encodingUTF-8?
configuration statusoff monitorInterval0appendersconsole nameConsole targetsystem_outpatternLayout pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n //console/appendersloggersroot levelINFOappender-ref refConsole //root/loggers
/configuration 有任何问题和建议都可以向我提问讨论,大家一起进步谢谢!
-over-