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));
        }
  • 相关阅读:
    wode.
    python中迭代器和生成器。
    Embeded linux 之 UBIFS文件系统
    Windows下Git安装和使用
    套接字 之 windows与linux 差异
    Embeded linux之RTL8188EU/RTL8188ETV使用
    嵌入式Linux之“+”版本问题
    Uboot之net
    Embeded linux之reboot
    Embeded linux之cifs文件系统
  • 原文地址:https://www.cnblogs.com/zhh2020/p/13415359.html
Copyright © 2011-2022 走看看