[解決済み] Apache HttpClient APIにおけるCloseableHttpClientとHttpClientの違いは何ですか?
2022-12-03 09:54:03
質問
弊社で開発したアプリケーションを勉強しています。それは、Apache HttpClientライブラリを使用します。ソースコードでは、それは
HttpClient
クラスを使用して、サーバーに接続するためのインスタンスを作成します。
私はApache HttpClientについて学びたいと思い、以下のことを調べました。
この例のセット
. すべての例では
CloseableHttpClient
の代わりに
HttpClient
. ということで、私は
CloseableHttpClient
の拡張版であり
HttpClient
. もしそうであれば、私は2つの質問があります。
- これらの 2 つの違いは何ですか。
- 新規開発にはどちらのクラスを使用するのがよいですか?
どのように解決するのですか?
- HttpClient API の主なエントリポイントは、HttpClient インターフェースです。
- HttpClientの最も本質的な機能は、HTTPメソッドを実行することです。
- HTTPメソッドの実行には、通常HttpClientが内部で処理する1つまたは複数のHTTPリクエスト/HTTPレスポンスの交換が含まれます。
- CloseableHttpClientは、HttpClientの基本実装であり、java.io.Closeableも実装している抽象クラスです。
-
最も単純な形でのリクエスト実行処理の例です。
CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpget = new HttpGet("http://localhost/"); CloseableHttpResponse response = httpclient.execute(httpget); CloseableHttpResponse response = httpclient.execute(httpget); try { //何かをする } finally { response.close()を実行します。 }
-
HttpClientのリソースを解放しました。 インスタンスCloseableHttpClientが不要になり、スコープ外に出ようとするとき、CloseableHttpClient#close()メソッドを呼んで、それに関連する接続マネージャをシャットダウンしなければなりません。
CloseableHttpClient httpclient = HttpClients.createDefault(); try { //何かする } finally { httpclient.close()を実行します。 }
を参照してください。
参照
を参照してください。
スカッジ Java 7以降では トライウィズリソース ステートメントを使用すると、ステートメントの最後で各リソースが閉じられることを保証します。これは、クライアントと各レスポンスの両方に使用することができます。
try(CloseableHttpClient httpclient = HttpClients.createDefault()){
// e.g. do this many times
try (CloseableHttpResponse response = httpclient.execute(httpget)) {
//do something
}
//do something else with httpclient here
}
関連
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
[解決済み] ブラウザによって異なるURLの最大長とは?
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java の switch case 文で必要な定数式の問題の解決法
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
java send https request prompt java.security.cert.について。
-
eclipse にリソースリーク:'in' が閉じない
-
Java基礎 - マッピングとQ/A
-
htmlとwordの相互変換の実装(画像あり)
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ
-
[解決済み] HTTPレスポンスのボディを文字列として取得するにはどうすればよいですか?