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));
        }
  • 相关阅读:
    策略模式
    简单工厂模式
    单例模式
    sp_xml_preparedocument _使用 处理XML文档
    LINQ to XML
    动态Linq(结合反射)
    IEqualityComparer<T>接口
    Linq to object 技巧、用法集锦
    IComparer<T> 接口Linq比较接口
    Linq to BBJECT之非延时标准查询操作符
  • 原文地址:https://www.cnblogs.com/zhh2020/p/13415359.html
Copyright © 2011-2022 走看看