<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Apache HttpClient 4.5.x 學(xué)習(xí)總結(jié)一:核心組件簡(jiǎn)介

      在工作中,搭建接口自動(dòng)化框架時(shí),使用了Apache HttpClient 庫發(fā)起HTTP請(qǐng)求,故系統(tǒng)化總結(jié)一下其中的知識(shí)點(diǎn)

      1.什么是Apache HttpClient 4.5.x
      Apache HttpClient 4.5.x 是一個(gè)功能強(qiáng)大的 Java HTTP 客戶端庫,其核心組件設(shè)計(jì)遵循模塊化原則。

      2.HTTPClient不是什么
      httpclient不是瀏覽器。它是客戶端HTTP傳輸庫。 HTTPClient的目的是傳輸和接收HTTP消息
      HTTPClient不會(huì)嘗試處理內(nèi)容,執(zhí)行嵌入在HTML頁面中的JavaScript,嘗試猜測(cè)內(nèi)容類型(如果未明確設(shè)置),或重新格式化請(qǐng)求 /重寫位置URI或與HTTP傳輸無關(guān)的其他功能。

      3.HTTPClient的典型請(qǐng)求流程
      創(chuàng)建HTTPClient --》構(gòu)造請(qǐng)求對(duì)象:HTTPGet/HttpPost --》配置請(qǐng)求參數(shù)/實(shí)體 --》執(zhí)行請(qǐng)求execute --》獲取HttpResponse --》處理響應(yīng)狀態(tài)/實(shí)體 --》釋放連接


      HTTPClient的核心組件


      1. HttpClient 接口

      • 核心入口點(diǎn):所有 HTTP 請(qǐng)求的執(zhí)行入口
      • 關(guān)鍵實(shí)現(xiàn)類CloseableHttpClient(推薦使用,支持資源自動(dòng)關(guān)閉)
      • 創(chuàng)建方式
        CloseableHttpClient httpClient = HttpClients.createDefault();
        

      2. HTTP 連接管理器 (Connection Management)

      HttpClientConnectionManager

      • 職責(zé):管理 HTTP 連接的創(chuàng)建、分配和生命周期
      • 關(guān)鍵實(shí)現(xiàn)
        • PoolingHttpClientConnectionManager(生產(chǎn)推薦)
          • 連接池實(shí)現(xiàn),支持多線程
          • 可配置參數(shù):
            PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
            cm.setMaxTotal(200);         // 最大連接數(shù)
            cm.setDefaultMaxPerRoute(20); // 每個(gè)路由的最大連接數(shù)
            
        • BasicHttpClientConnectionManager:?jiǎn)芜B接管理器(僅測(cè)試用)

      3. HTTP 請(qǐng)求執(zhí)行器 (HttpRequestExecutor)

      • 職責(zé):核心執(zhí)行引擎,處理請(qǐng)求/響應(yīng)的編解碼
      • 工作流程
        請(qǐng)求準(zhǔn)備 → 發(fā)送 → 接收響應(yīng) → 解析
      • 通常通過 HttpClient 隱式調(diào)用,無需直接操作

      4. HTTP 消息實(shí)體 (HttpEntity)

      • 職責(zé):封裝 HTTP 消息體(請(qǐng)求體或響應(yīng)體)
      • 常用實(shí)現(xiàn)
        • StringEntity:字符串內(nèi)容
        • ByteArrayEntity:字節(jié)數(shù)組
        • FileEntity:文件流
        • UrlEncodedFormEntity:表單數(shù)據(jù)(如 name=value&age=20
      • 使用示例
        HttpPost post = new HttpPost("http://example.com");
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("key", "value"));
        post.setEntity(new UrlEncodedFormEntity(params));
        

      5. HTTP 上下文 (HttpContext)

      • 職責(zé):跨請(qǐng)求的會(huì)話狀態(tài)容器(類似 Map<String, Object>
      • 典型用途
        • 保持登錄狀態(tài)(Cookie 持久化)
        • 重定向跟蹤
        • 認(rèn)證信息傳遞
      • 實(shí)現(xiàn)類BasicHttpContext, HttpClientContext
        HttpClientContext context = HttpClientContext.create();
        httpClient.execute(request, context);
        CookieStore cookies = context.getCookieStore(); // 獲取Cookies
        

      6. 攔截器 (Interceptors)

      • 請(qǐng)求攔截器 (HttpRequestInterceptor)
        • 修改請(qǐng)求頭、記錄日志等
      • 響應(yīng)攔截器 (HttpResponseInterceptor)
        • 處理 GZIP 壓縮、錯(cuò)誤響應(yīng)等
      • 配置示例
        CloseableHttpClient client = HttpClients.custom()
            .addInterceptorLast((HttpResponseInterceptor) (response, context) -> {
                // 自動(dòng)解壓GZIP響應(yīng)
                if (response.containsHeader("Content-Encoding")) {
                    response.removeHeaders("Content-Encoding");
                }
            })
            .build();
        

      7. 重定向策略 (RedirectStrategy)

      • 默認(rèn)實(shí)現(xiàn)LaxRedirectStrategy(自動(dòng)處理 30x 重定向)
      • 自定義重定向
        HttpClientBuilder.create()
            .setRedirectStrategy(new CustomRedirectStrategy())
            .build();
        

      8. 認(rèn)證機(jī)制 (Authentication)

      • 支持方案:Basic、Digest、NTLM、Kerberos
      • 核心組件
        • CredentialsProvider:憑證存儲(chǔ)
          BasicCredentialsProvider creds = new BasicCredentialsProvider();
          creds.setCredentials(new AuthScope("host", 80), 
                               new UsernamePasswordCredentials("user", "pass"));
          
        • AuthCache:預(yù)存認(rèn)證信息
        • AuthenticationStrategy:認(rèn)證流程控制

      • CookieStore:Cookie 存儲(chǔ)接口(默認(rèn) BasicCookieStore
      • CookieSpec:Cookie 策略(RFC 標(biāo)準(zhǔn))
      • 配置示例
        CloseableHttpClient client = HttpClients.custom()
            .setDefaultCookieStore(new BasicCookieStore())
            .setDefaultCookieSpecRegistry(registry)
            .build();
        

      10. SSL/TLS 配置

      • 關(guān)鍵組件
        • SSLContext:自定義證書/信任策略
        • HostnameVerifier:主機(jī)名驗(yàn)證(可繞過)
      • 示例(繞過證書驗(yàn)證 - 僅測(cè)試環(huán)境用)
        SSLContext sslContext = SSLContexts.custom()
            .loadTrustMaterial((chain, authType) -> true) // 信任所有證書
            .build();
        
        CloseableHttpClient client = HttpClients.custom()
            .setSSLContext(sslContext)
            .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
            .build();
        

      最佳實(shí)踐

      1. 連接池必用:生產(chǎn)環(huán)境務(wù)必配置 PoolingHttpClientConnectionManager
      2. 資源釋放
        try (CloseableHttpResponse response = httpClient.execute(request)) {
            // 處理響應(yīng)
        } // 自動(dòng)關(guān)閉連接
        
      3. 性能調(diào)優(yōu)
        • 合理設(shè)置連接池參數(shù)
        • 復(fù)用 HttpClient 實(shí)例(線程安全)
      4. 異常處理:捕獲 IOException 并實(shí)現(xiàn)重試邏輯

      官方文檔:HttpClient 4.5 Documentation

      posted @ 2025-07-18 13:39  hqq的進(jìn)階日記  閱讀(41)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 久激情内射婷内射蜜桃| 性一交一黄一片| av中文字幕一区二区| 四虎成人精品在永久免费| 国产在线精品中文字幕| 亚洲AV福利天堂在线观看| 汝城县| 久久精品国产国产精品四凭| 午夜福利在线观看6080| 特克斯县| 自拍亚洲综合在线精品| 日韩美少妇大胆一区二区| 99人体免费视频| 国产精品久久蜜臀av| 国产综合精品91老熟女| 亚洲男人在线天堂| 亚州中文字幕一区二区| 蜜臀视频在线观看一区二区| 国产精品一二二区视在线| 久久亚洲精品11p| 国产精品露脸3p普通话| 无码人妻视频一区二区三区| 黑人好猛厉害爽受不了好大撑| 国产精品综合av一区二区国产馆| 国产精品青草久久久久福利99 | 久久热精品视频在线视频| 91精品91久久久久久| 无码一区二区三区久久精品| 在线天堂www在线| 日韩精品卡1卡2日韩在线| 久久精品无码免费不卡| 亚洲精品一区二区美女| 亚洲男人天堂一级黄色片| 免费久久人人爽人人爽AV| 国产三级精品三级在线区| 日韩在线一区二区每天更新| 日韩精品一区二区都可以| 天堂网在线.www天堂在线资源| 东京热tokyo综合久久精品| 老少配老妇老熟女中文普通话| 亚洲最大成人在线播放|