实现java非阻塞http请求的两种方式

摘要:
1.okhttppublicvoidokhttp(){Requestrequest=newRequest.Builder().url().post(RequestBody.create(MediaType.parse("application/json"),content)).build();OkHttpClientclient=newOkHttpClient.Builder().connecti

1.okhttp

public voidokhttp() {
    Request request = newRequest.Builder()
        .url()
        .post(RequestBody.create(MediaType.parse("application/json"), content))
        .build();

      OkHttpClient client = newOkHttpClient.Builder()
          .connectionPool(new ConnectionPool(50, 5, TimeUnit.MINUTES))
          .readTimeout(5, TimeUnit.SECONDS)
          .connectTimeout(5, TimeUnit.SECONDS)
          .build();

      client.newCall(request).enqueue(newCallback() {
        @Override
        public voidonFailure(Call call, IOException e) {
          log.info("error:" +e.toString());
        }

        @Override
        public void onResponse(Call call, Response response) throwsIOException {
          log.info("success:" +response.body().string());
        }
      });
  }

2.webClient

public static Mono<String>webClient(){
        ReactorClientHttpConnector connector = newReactorClientHttpConnector(
                options -> options.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 3000)
                        .compression(true)
                        .afterNettyContextInit(ctx ->{
                            ctx.addHandlerLast(new ReadTimeoutHandler(3000, TimeUnit.MILLISECONDS));
                        }));

        WebClient client =WebClient.builder()
                    .defaultHeader(HttpHeaders.CONTENT_TYPE, API_MIME_TYPE)
                    .defaultHeader(HttpHeaders.USER_AGENT, USER_AGENT)
                    .clientConnector(connector)
                    .build();
     returnclient.get()
                .uri()
                .retrieve()
                .bodyToMono(String.class)
                .doOnError(e -> logger.info("error:" +e))
                .doOnSuccess(result -> logger.info("result" +result));
    }

免责声明:文章转载自《实现java非阻塞http请求的两种方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇appium的元素定位总结剪枝策略下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

如何让bat文件已管理员身份运行

某些批处理需要高权限才能执行行,以实现所需的Zhi效果。您可以以管理员身份运行,方法是将以下代码放在批处理的顶部。...

C# 如何提取SaveFileDialog的保存路径

直接使用代码1publicTestOne()2{3InitializeComponent();4SaveFileDialog();//调用打开SaveFileDialog保存对话框5}67#区域保存对话框8privateevoidSaveFileDialog()9{10//startlocalFilePath,fileNameExt,newFileName,...

Windows 7集成IE11(离线安装包、补丁)

当Win7系统需要集成IE11时,我们需要提前输入六个补丁KB2731771、KB2786081、KB2834140、KB2670838、KB2729094、KB2533623332位★ 百度网盘64位★ 百度网盘。我们需要输入这六个补丁才能更改IE11。此外,我们还需要32位的IE11离线安装包★ 百度网盘64位★ 百度网盘。这六个补丁是安装IE11所必需...

Android开发者选项——Gpu呈现模式分析

对于Android用户来说,无论你用的什么品牌的手机,在开发者选项中都能发现“玄学曲线”的开关,之所以称其为玄学曲线,还是因为它被很多网友用于测试一个说不清道不明的东西——流畅度。说到玄学曲线其实它的真名叫做“ProfileGPURendering”,在中文安卓系统下译为“GPU显示配置文件”或“GPU呈现模式分析”等,根据不同厂商定制系统叫法稍有不同。...

MySQL锁详解

MySQL锁详解update语句执行流程MySQL的锁介绍按照锁的粒度来说,MySQL主要包含三种类型(级别)的锁定机制:全局锁:锁的是整个database。由MySQL的SQLlayer层实现的表级锁:锁的是某个table。由MySQL的SQLlayer层实现的行级锁:锁的是某行数据,也可能锁定行之间的间隙。...

Jdk升级到11引起的问题:程序包javax.xml.bind.annotation不存在

您可以看到ELDict类中有一个引用:importjavax。xml。绑定注释XmlAttribute;虽然未使用,但它会导致mvn编译错误。在在线绑定中搜索“包javax.xml.bind.nannotation不存在”。结果是:包javax。xml。bind Annotation不存在-CSDN论坛2009年12月2日·无法编译使用jaxb的类,因为软件...