zoukankan      html  css  js  c++  java
  • 实现java非阻塞http请求的两种方式

    1.okhttp

    public void okhttp() {
        Request request = new Request.Builder()
            .url()
            .post(RequestBody.create(MediaType.parse("application/json"), content))
            .build();
    
          OkHttpClient client = new OkHttpClient.Builder()
              .connectionPool(new ConnectionPool(50, 5, TimeUnit.MINUTES))
              .readTimeout(5, TimeUnit.SECONDS)
              .connectTimeout(5, TimeUnit.SECONDS)
              .build();
    
          client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
              log.info("error:" + e.toString());
            }
    
            @Override
            public void onResponse(Call call, Response response) throws IOException {
              log.info("success:" + response.body().string());
            }
          });
      }

    2.webClient

    public static Mono<String> webClient(){
            ReactorClientHttpConnector connector = new ReactorClientHttpConnector(
                    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();
         return client.get()
                    .uri()
                    .retrieve()
                    .bodyToMono(String.class)
                    .doOnError(e -> logger.info("error:" + e))
                    .doOnSuccess(result -> logger.info("result" + result));
        }
  • 相关阅读:
    java-集合框架-泛型2-泛型限定
    进程间通信
    多进程编程基础概念
    linux deb 打包流程
    linux RPM 打包流程
    Python 第一個程序
    从注册验证码入手,我保住了30%的流失用户
    为什么Web端登录需要验证码?
    网络验证码的进化:从简单图文到无感验证
    公开课 | 金融知识图谱的应用探索
  • 原文地址:https://www.cnblogs.com/zhh2020/p/13415359.html
Copyright © 2011-2022 走看看