Java – HTTPリクエストでJSONデータを送信する方法
JavaでHTTPリクエストを使用してJSONデータを送信するには、主にHttpURLConnectionまたはHttpClientを利用します。
HttpURLConnectionは標準ライブラリで提供され、軽量ですがコードがやや冗長です。
一方、HttpClient(Java 11以降)は非同期処理や簡潔な記述が可能です。
手順としては、リクエストヘッダーにContent-Type: application/jsonを設定し、JSONデータをリクエストボディに書き込みます。
外部ライブラリ(例:GsonやJackson)を使うと、オブジェクトをJSON形式に変換するのが容易です。
HttpURLConnectionを使ったJSONデータ送信
JavaでHTTPリクエストを送信する際、HttpURLConnectionクラスを使用することが一般的です。
このクラスを使って、JSONデータをPOSTリクエストとして送信する方法を解説します。
以下にサンプルコードを示します。
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class App {
    public static void main(String[] args) {
        try {
            // 送信先のURLを指定
            URL url = new URL("https://example.com/api/data");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            
            // リクエストメソッドをPOSTに設定
            connection.setRequestMethod("POST");
            
            // リクエストヘッダーを設定
            connection.setRequestProperty("Content-Type", "application/json; utf-8");
            connection.setRequestProperty("Accept", "application/json");
            connection.setDoOutput(true); // 出力を有効にする
            
            // JSONデータを作成
            String jsonInputString = "{\"name\": \"太郎\", \"age\": 30}";
            
            // JSONデータを送信
            try (OutputStream os = connection.getOutputStream()) {
                byte[] input = jsonInputString.getBytes("utf-8");
                os.write(input, 0, input.length);
            }
            
            // レスポンスコードを取得
            int responseCode = connection.getResponseCode();
            System.out.println("レスポンスコード: " + responseCode);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}このコードでは、指定したURLに対してJSONデータをPOSTリクエストとして送信しています。
リクエストヘッダーには、Content-TypeとAcceptを設定し、JSON形式でデータを送信することを示しています。
レスポンスコード: 200この出力結果は、リクエストが成功したことを示しています。
レスポンスコードが200の場合、サーバーがリクエストを正常に処理したことを意味します。
Java 11以降のHttpClientを使ったJSONデータ送信
Java 11以降では、HttpClientクラスが新たに追加され、HTTPリクエストの送信がより簡単かつ直感的に行えるようになりました。
以下に、HttpClientを使用してJSONデータをPOSTリクエストとして送信する方法を示します。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
public class App {
    public static void main(String[] args) {
        try {
            // HttpClientのインスタンスを作成
            HttpClient client = HttpClient.newHttpClient();
            
            // JSONデータを作成
            String jsonInputString = "{\"name\": \"花子\", \"age\": 25}";
            
            // POSTリクエストを作成
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(new URI("https://example.com/api/data"))
                    .header("Content-Type", "application/json; utf-8")
                    .POST(BodyPublishers.ofString(jsonInputString))
                    .build();
            
            // リクエストを送信し、レスポンスを取得
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            
            // レスポンスコードとボディを表示
            System.out.println("レスポンスコード: " + response.statusCode());
            System.out.println("レスポンスボディ: " + response.body());
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}このコードでは、HttpClientを使用して指定したURLに対してJSONデータをPOSTリクエストとして送信しています。
リクエストヘッダーにはContent-Typeを設定し、JSON形式でデータを送信することを示しています。
レスポンスコード: 200
レスポンスボディ: {"status": "success"}この出力結果は、リクエストが成功したことを示しており、レスポンスコードが200の場合、サーバーがリクエストを正常に処理したことを意味します。
また、レスポンスボディにはサーバーからの応答が含まれています。
実践的なユースケース
Javaを使用してHTTPリクエストでJSONデータを送信する実践的なユースケースをいくつか紹介します。
これにより、具体的なシナリオでの活用方法を理解できます。
ユースケース一覧
| ユースケース名 | 説明 | 
|---|---|
| ユーザー登録 | 新規ユーザーの情報をサーバーに送信し、登録処理を行う。 | 
| データ取得 | サーバーから特定のデータを取得するためにリクエストを送信。 | 
| フィードバック送信 | ユーザーからのフィードバックをサーバーに送信する。 | 
| IoTデバイスデータ送信 | IoTデバイスからのセンサーデータをサーバーに送信。 | 
1. ユーザー登録
ユーザーがアプリケーションに新規登録する際、名前やメールアドレス、パスワードなどの情報をJSON形式でサーバーに送信します。
これにより、サーバー側でユーザー情報をデータベースに保存することができます。
2. データ取得
特定の条件に基づいてサーバーからデータを取得する場合、GETリクエストを使用してJSON形式のレスポンスを受け取ります。
例えば、特定のユーザーのプロフィール情報を取得する際に利用されます。
3. フィードバック送信
アプリケーションの使用後、ユーザーがフィードバックを送信する際に、コメントや評価をJSON形式でサーバーに送信します。
これにより、ユーザーの意見を集約し、サービスの改善に役立てることができます。
4. IoTデバイスデータ送信
IoTデバイスが収集したセンサーデータ(温度、湿度、位置情報など)を定期的にサーバーに送信する際にも、JSON形式がよく使用されます。
これにより、リアルタイムでデータを監視し、分析することが可能になります。
これらのユースケースは、Javaを使用してHTTPリクエストでJSONデータを送信する際の具体的なシナリオを示しており、実際のアプリケーション開発において非常に役立ちます。
まとめ
この記事では、Javaを使用してHTTPリクエストでJSONデータを送信する方法について、HttpURLConnectionとHttpClientの2つのアプローチを詳しく解説しました。
また、実際のユースケースを通じて、どのようにこれらの技術が活用されるかを具体的に紹介しました。
これらの知識を活かして、実際のアプリケーション開発においてHTTPリクエストを効果的に利用してみてください。
 
![[Java] ハッシュとは?検索や整合性チェックに使えるメリットなどを解説](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52021.png)
![[Java] URLからドメイン名を取得する方法](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52020.png)
![[Java] 文字列やオブジェクトからハッシュ値を取得・計算する方法](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52026.png)
![[Java] SHA256で文字列をハッシュ化する方法](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52024.png)
![[Java] パスワードをハッシュ化する方法まとめ](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52023.png)
![[Java] ハッシュ値から元の値を復元できない理由を解説](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52028.png)
![[Java] ハッシュ値同士の比較で比較処理を高速化する](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52027.png)
![[Java] SHA512アルゴリズムで文字列をハッシュ化する方法](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52022.png)
![[Java] プログラムからシステム日付を変更する方法(非推奨)](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52019.png)
![[Java] システム日付を取得する方法](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52018.png)
![[Java] システムの現在日時を取得する方法](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52017.png)
![[Java] プログラムを終了させる方法 – System.exitメソッド](https://af-e.net/wp-content/uploads/2024/11/thumbnail-52016.png)