Androidアプリケーションでmultipart/form-dataを使用してPOSTリクエストを送信する方法を説明します。以下に、シンプルで簡単な方法といくつかのコード例を示します。
- HttpURLConnectionを使用してmultipart/form-dataのPOSTリクエストを作成する方法:
URL url = new URL("http://example.com/upload"); // リクエストを送信するURL
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
// リクエストのボディを作成
String boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW";
String lineBreak = "\r\n";
String data = "";
// ファイルパラメータを追加
String filePath = "/path/to/file.jpg";
File file = new File(filePath);
String fileName = file.getName();
data += "--" + boundary + lineBreak;
data += "Content-Disposition: form-data; name=\"file\"; filename=\"" + fileName + "\"" + lineBreak;
data += "Content-Type: image/jpeg" + lineBreak + lineBreak;
// ファイルのバイナリデータを読み込み、リクエストに書き込む
FileInputStream fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
connection.getOutputStream().write(buffer, 0, bytesRead);
}
fileInputStream.close();
data += lineBreak + "--" + boundary + "--" + lineBreak;
// リクエストのボディを書き込む
OutputStream outputStream = connection.getOutputStream();
outputStream.write(data.getBytes());
outputStream.flush();
outputStream.close();
// レスポンスを取得
int responseCode = connection.getResponseCode();
String responseMessage = connection.getResponseMessage();
// レスポンスを処理するコードを追加
// コネクションを閉じる
connection.disconnect();
上記のコードでは、http://example.com/upload
にファイルをアップロードするPOSTリクエストを作成しています。filePath
変数にはアップロードするファイルのパスを指定してください。必要に応じて、リクエストヘッダーやパラメータを追加することもできます。
- 追加の注意事項:
- 上記のコードでは、ファイルのバイナリデータをバッファリングしてからリクエストに書き込んでいます。大きなファイルの場合は、メモリの使用量に注意してください。必要に応じて、ストリームを直接リクエストに書き込む方法を検討してください。
- ファイルの種類やパラメータ名は、実際の要件に合わせて適切に変更してください。
このようにして、Androidアプリケーションでmultipart/form-dataを使用してPOSTリクエストを作成および送信することができます。必要に応じて、レスポンスの処理コードを追加してください。