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リクエストを効果的に利用してみてください。