1. ホーム
  2. java

[解決済み] Deprecated Java HttpClient - How hard can it be?

2022-05-06 16:04:16

質問

JSONをダウンロードして、それをオブジェクトにデシリアライズしようとしているだけです。まだ、JSONをダウンロードするところまでは行っていません。

apacheのサイトにあるものを含め、私が見つけたほとんどすべてのHttpClientの例は、次のようなものです。

import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;

public void blah() {
    HttpClient client = new DefaultHttpClient();
    ...
}

しかし、Netbeans が教えてくれるのは DefaultHttpClient は非推奨です。ググってみると DefaultHttpClient deprecated と思いつく限りのバリエーションがありますが、有用な結果が得られないので、明らかに何かを見逃しています。

ウェブページの内容をダウンロードするための正しいJava7の方法は何ですか?本当に言語の一部としてまともなHttpクライアントがないのでしょうか?私はそれを信じるのが難しいと思います。

このための私のMaven依存は...

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>LATEST</version>
    <type>jar</type>
</dependency>

解決方法は?

関連するインポートを紹介します。

import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import java.io.IOException;

使用方法

HttpClient httpClient = HttpClientBuilder.create().build();

EDIT(Julesさんの提案を受けて)。

として build() メソッドは CloseableHttpClient どの AutoClosable のように、try-with-resources文の中に宣言することができます(Java 7以上)。

try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {

    // use httpClient (no need to close it explicitly)

} catch (IOException e) {

    // handle

}