OSS探訪

JavaアプリからHTTP/1.1・HTTP/2通信を行い、接続管理・認証・Cookie・キャッシュをまとめて扱う

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
1,535
主要言語
Java
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/02
ページ内ナビ

概要

Apache HttpClientは、JavaアプリケーションからHTTP通信を行うためのクライアントライブラリです。classicと非同期のAPI、接続管理、認証、Cookie、キャッシュなどを提供し、HTTP/1.1とHTTP/2を扱うアプリケーションの通信層を構成できます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

classicと非同期のHTTPクライアントを使い分ける

通常の同期処理ではCloseableHttpClientを中心としたclassic APIを利用でき、高い同時実行性が必要な場面では非同期transportを選べます。用途に応じてrequest実行方式を分けながら、同じHttpComponents系の設定モデルを利用できます。

出典:[1][2]

接続・認証・Cookieなど通信の状態管理をまとめる

HTTP requestの実行だけでなく、接続再利用、認証、Cookie、redirect、圧縮、cacheなど、長時間動作するclientに必要な周辺機能を組み合わせられます。

出典:[2][1]

HTTP/1.1とHTTP/2の仕様に沿った通信を構成する

READMEはHTTP Semantics、Caching、HTTP/1.1、HTTP/2、認証、Cookieなど複数RFCへの適合範囲を示しています。5.xではHttpCore 5系と連携してHTTP/1.1とHTTP/2を扱います。

出典:[1][4]

向いている用途

外部APIや業務システムへの通信を細かく制御したいJavaサービスに向く

多数の外部HTTP接続を再利用したいサービス、認証やCookieを伴うclient、proxy/TLS設定や非同期通信を細かく調整したいJavaアプリケーションで検討できます。

出典:[2][1]

導入前の確認

5.6.4はJava 8以上を必要とする

HttpClient 5.6.4はJava 8以上を前提とし、Mavenではorg.apache.httpcomponents.client5:httpclient5:5.6.4として利用します。利用中のJDKと依存解決結果を確認してください。

出典:[2][3]

4.xから5.xはpackageと設定APIの変更を伴う

5.xはorg.apache.hc.client5系packageと新しいartifact座標を使います。4.5.xから更新する場合は単純なversion置換ではなく、公式のmigration guideに沿ってAPIと設定差分を確認します。

出典:[2][3]

5.6.4はHttpCore 5.4.3系と組み合わせて動く

5.6.4のmain moduleはHttpCore 5.4.3とHTTP/2用moduleなどへ依存します。依存管理で一部だけ異なるversionへ上書きする場合は、互換性とrelease noteを確認してください。

出典:[4][5]

参考にした公式資料

  1. [1]Apache HttpClient README(2026-10-03)
  2. [2]Apache HttpClient Quick Start(2026-10-03)
  3. [3]Apache HttpClient Maven coordinates(2026-10-03)
  4. [4]Apache HttpClient 5.6.4 dependencies(2026-10-03)
  5. [5]Apache HttpComponents project news(2026-10-03)
  6. [6]Apache HttpClient Apache-2.0 license(2026-10-03)
編集部からの補足

単純なHTTP呼び出しだけならJDK標準APIで足りる場合があります。接続プール、認証、Cookie、キャッシュ、非同期通信などを一貫して制御したい場合に、HttpClientを比較すると導入理由を明確にできます。

3ステップで試す

  1. 1

    HttpClient 5.6.4を依存関係に追加する

    既存のMaven projectのpom.xmlへ追加します。Java 8以上が必要です。

    <dependency><groupId>org.apache.httpcomponents.client5</groupId><artifactId>httpclient5</artifactId><version>5.6.4</version></dependency>
  2. 2

    GET requestを実行するclientを作成する

    公式Quick Startと同じclassic APIの流れでclientを閉じ、response codeを確認します。必要なorg.apache.hc.client5.http.* classをimportしてください。

    try (CloseableHttpClient httpclient = HttpClients.createDefault()) { ClassicHttpRequest request = ClassicRequestBuilder.get("https://httpbin.org/get").build(); httpclient.execute(request, response -> { System.out.println(response.getCode()); return null; }); }
  3. 3

    Mavenでビルドして動作を確認する

    既存projectのtestまたは同等の実行方法でHTTP client codeを動かし、接続・TLS・proxyなど実環境の設定も確認します。

    mvn test
公式READMEで確認

成長

成長の推移 · 直近30日

1,535 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
16
Open PR
10

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • httpcomponents
Stars
1,535
Forks
991
Watchers
100
Open Issues
0
Contributors
112
所有者種別
Organization
主要言語
Java
ライセンス
Apache-2.0
リポジトリ最終更新
2026/10/02

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?