ホームページ  >  記事  >  Java  >  Java API開発におけるHTTPリクエストにApache HttpClientを使用する

Java API開発におけるHTTPリクエストにApache HttpClientを使用する

PHPz
PHPzオリジナル
2023-06-18 09:27:181478ブラウズ

インターネットの継続的な発展に伴い、HTTP プロトコルは現代のネットワーク通信の基礎の 1 つになりました。 Java プログラミングでは、Apache HttpClient ライブラリを使用すると、HTTP リクエスト操作を非常に便利に実行できます。この記事では、Java API 開発で Apache HttpClient を使用して HTTP リクエストを行う方法を紹介します。

  1. 準備

開始する前に、Apache HttpClient ライブラリをダウンロードし、プロジェクトの依存関係として追加する必要があります。 Apache HttpClient は、Maven や Gradle などのツールを通じて参照できるオープン ソースの Java HTTP クライアント ライブラリです。

以下は、Maven を使用して Apache HttpClient を参照する例です:

<dependencies>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.13</version>
    </dependency>
</dependencies>

ライブラリを導入した後、HTTP リクエスト操作を開始できます。

  1. GET リクエストの送信

HttpClient を使用した GET リクエストの送信は非常に簡単です。以下は、HttpClient 経由で GET リクエストを送信し、応答コンテンツを出力する方法を示す例です。

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("https://www.baidu.com");
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}

上記のコードは、GET リクエストを Baidu に送信し、応答コンテンツを出力します。このコードでは、CloseableHttpClient クライアント インスタンスを作成し、HttpGet オブジェクトを使用して GET リクエストを作成し、リクエストを実行します。レスポンスでエンティティを取得し、文字列に変換して出力します。

  1. POST リクエストを送信する

HttpClient を使用して POST リクエストを送信する場合、UrlEncodedFormEntity オブジェクトまたは MultipartEntityBuilder オブジェクトを使用してリクエスト パラメータを含めることを選択できます。

以下は、UrlEncodedFormEntity オブジェクトの使用例です。

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.baidu.com");
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("username", "johndoe"));
params.add(new BasicNameValuePair("password", "password123"));
try {
    httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}

上記のコードは、POST リクエストを Baidu に送信し、リクエスト本文にパラメータを含めます。この例では、UrlEncodedFormEntity オブジェクトを使用してリクエスト パラメーターを含め、それらを POST リクエストのエンティティとして設定します。レスポンスでエンティティを取得し、文字列に変換して出力します。

  1. ファイルの送信

ファイルを送信する必要がある場合は、MultipartEntityBuilder オブジェクトを使用する必要があります。インクルードされるファイルの例を次に示します。

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("http://localhost:8080/upload");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("file", new File("example.txt"));
httpPost.setEntity(builder.build());
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}

上記のコードは、example.txt という名前のファイルを localhost:8080 に転送します。この例では、MultipartEntityBuilder オブジェクトを使用し、ファイルをバイナリ コンテンツとして追加します。レスポンスでエンティティを取得し、文字列に変換して出力します。

  1. リクエスト送信時にヘッダー情報を追加する

リクエストにヘッダー情報を追加する必要がある場合があります。以下はヘッダー情報を追加する例です。

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.baidu.com");
httpPost.setHeader("User-Agent", "Mozilla/5.0");
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);
    }
} catch (IOException e) {
    e.printStackTrace();
}

上記のコードは、GET リクエストを Baidu に送信し、User-Agent ヘッダー情報を追加します。この例では、HttpPost オブジェクトを使用して GET リクエストを作成し、setHeader メソッドを呼び出してヘッダー情報を追加します。レスポンスでエンティティを取得し、文字列に変換して出力します。

  1. リクエスト送信時のタイムアウトの設定

リクエスト送信時に、リクエストのタイムアウトとレスポンスのタイムアウトを設定することもできます。これにより、サーバーからの応答を待機している間にクライアントが無期限にブロックされることがなくなります。タイムアウトの設定例を次に示します。

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("https://www.baidu.com");
RequestConfig requestConfig = RequestConfig.custom()
    .setConnectTimeout(5000) // 连接超时时间
    .setSocketTimeout(5000) // 响应超时时间
    .build();
httpPost.setConfig(requestConfig);
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        String result = EntityUtils.toString(entity, "UTF-8");
        System.out.println(result);    
    }
} catch (IOException e) {
    e.printStackTrace();
}

上記のコードは、POST リクエストを Baidu に送信し、接続タイムアウトと応答タイムアウトを 5 秒に設定します。この例では、RequestConfig オブジェクトを使用し、カスタム メソッドを通じて接続タイムアウトと応答タイムアウトを設定します。レスポンスでエンティティを取得し、文字列に変換して出力します。

  1. 概要

Apache HttpClient ライブラリは、Java 開発者が HTTP リクエストを非常に簡単に実行できるようにする便利な API を多数提供します。この記事では、Apache HttpClient を使用して、GET リクエスト、POST リクエスト、ファイルを含むリクエスト、ヘッダー情報を追加するリクエスト、タイムアウトを設定するリクエストを送信する方法について説明します。この記事が、Apache HttpClient を使用する Java 開発者に何らかの助けになれば幸いです。

以上がJava API開発におけるHTTPリクエストにApache HttpClientを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。