Java – HTTP POSTリクエストを送信する方法
JavaでHTTP POSTリクエストを送信するには、主に HttpURLConnection
または HttpClient
を使用します。
HttpURLConnection
はJava SEに組み込まれており、軽量ですがコードがやや冗長です。
一方、 HttpClient
はJava 11以降で利用可能で、非同期処理や簡潔な記述が可能です。
POSTリクエストでは、リクエストボディにデータを送信するため、適切なContent-Typeヘッダー(例: “application/json”)を設定し、データをリクエストの出力ストリームに書き込みます。
JavaでHTTP POSTリクエストを送信する方法
JavaでHTTP POSTリクエストを送信するには、HttpURLConnectionクラス
を使用する方法が一般的です。
このクラスを利用することで、簡単にHTTPリクエストを作成し、サーバーにデータを送信することができます。
以下に、基本的な実装方法を示します。
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/post");
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); // 出力を有効にする
// 送信するデータを作成
String jsonInputString = "{\"name\": \"太郎\", \"age\": 30}";
// データを送信
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();
}
}
}
HttpURLConnection
を使用して、指定したURLに対してPOSTリクエストを送信します。- リクエストヘッダーには、
Content-Type
とAccept
を設定し、JSON形式でデータを送信することを示しています。 OutputStream
を使用して、JSON形式のデータをリクエストボディに書き込みます。- 最後に、レスポンスコードを取得して表示します。
レスポンスコード: 200
このコードを実行すると、指定したURLに対してPOSTリクエストが送信され、レスポンスコードが表示されます。
レスポンスコードが200の場合、リクエストが成功したことを示します。
POSTリクエストで送信するデータの形式
HTTP POSTリクエストでは、さまざまな形式でデータを送信することができます。
一般的なデータ形式には、以下のようなものがあります。
データ形式 | 説明 |
---|---|
JSON | JavaScript Object Notation。軽量で人間にも読みやすい形式。 |
XML | Extensible Markup Language。構造化されたデータを表現するためのマークアップ言語。 |
Form URL Encoded | フォームデータをURLエンコードした形式。主にWebフォームからのデータ送信に使用。 |
Multipart Form | ファイルアップロードなど、複数のデータを送信する際に使用。 |
JSON形式
JSONは、データをキーと値のペアで表現する形式で、特にAPIとの通信で広く使用されています。
以下は、JSON形式の例です。
{
"name": "太郎",
"age": 30,
"isStudent": false
}
XML形式
XMLは、データをタグで囲むことで構造を持たせる形式です。
以下は、XML形式の例です。
<person>
<name>太郎</name>
<age>30</age>
<isStudent>false</isStudent>
</person>
Form URL Encoded形式
Form URL Encoded形式は、Webフォームから送信されるデータの標準的な形式です。
以下は、Form URL Encoded形式の例です。
name=%E5%A4%AA%E9%83%8E&age=30&isStudent=false
Multipart Form形式
Multipart Form形式は、ファイルを含むデータを送信する際に使用されます。
以下は、Multipart Form形式の例です。
--boundary
Content-Disposition: form-data; name="name"
太郎
--boundary
Content-Disposition: form-data; name="file"; filename="example.txt"
Content-Type: text/plain
(ファイルの内容)
--boundary--
POSTリクエストで送信するデータの形式は、用途やAPIの仕様に応じて選択する必要があります。
JSON形式は特に人気があり、シンプルで扱いやすいため、多くのAPIで採用されています。
XML形式は、より複雑なデータ構造を必要とする場合に適しています。
Form URL Encoded形式は、主にWebフォームからのデータ送信に使用され、Multipart Form形式はファイルアップロードに最適です。
実践例:APIとの連携
Javaを使用してAPIと連携し、HTTP POSTリクエストを送信する実践例を紹介します。
この例では、JSON形式のデータを外部APIに送信し、レスポンスを受け取る方法を示します。
ここでは、架空のユーザー登録APIを使用します。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class App {
public static void main(String[] args) {
try {
// APIのURLを指定
URL url = new URL("https://example.com/api/register");
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); // 出力を有効にする
// 送信するデータを作成
String jsonInputString = "{\"username\": \"taro\", \"password\": \"password123\"}";
// データを送信
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);
// レスポンス内容を読み取る
try (BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"))) {
StringBuilder response = new StringBuilder();
String responseLine;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
System.out.println("レスポンス内容: " + response.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
HttpURLConnection
を使用して、指定したAPIのURLに対してPOSTリクエストを送信します。- リクエストヘッダーには、
Content-Type
とAccept
を設定し、JSON形式でデータを送信することを示しています。 OutputStream
を使用して、ユーザー名とパスワードを含むJSON形式のデータをリクエストボディに書き込みます。- レスポンスコードを取得し、成功した場合はレスポンス内容を読み取って表示します。
レスポンスコード: 201
レスポンス内容: {"message": "ユーザー登録が成功しました"}
このコードを実行すると、指定したAPIに対してユーザー登録のPOSTリクエストが送信され、レスポンスコードと内容が表示されます。
レスポンスコードが201の場合、リソースが正常に作成されたことを示します。
レスポンス内容には、APIからのメッセージが含まれています。
まとめ
この記事では、Javaを使用してHTTP POSTリクエストを送信する方法について詳しく解説しました。
具体的には、POSTリクエストで送信するデータの形式や、APIとの連携における実践例を通じて、実際のコードを示しながらその使い方を説明しました。
これを機に、実際のプロジェクトでAPIとの連携を試みて、さまざまなデータ形式を活用してみてください。