概要
JavaでJSONをHTTP POSTする方法をまとめた記事です
必要最低限の書き方のみまとめています。
#前提
簡略化のため、JSON形式の文字列をあらかじめ用意しました。
JSONをjavaに変換する方法などは他の記事を参考にして下さい。
呼び出し元がこのクラスをインスタンス化し、execute()メソッドを呼び出すことを想定しています。
手順
手順は以下の通りです
1.HttpURLConnectionで接続するための設定をする
2.接続を確立する
3.リクエストボディに書き込みを行う
4.レスポンスを受け取る
5.Input/OutputStreamを閉じる
JavaでHTTP通信する方法
Sample.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class Sample {
//URL例
String apiURL ="https://XXX.YY-ZZZZ.com/WWW/";
//JSON文字列例
String json =
"{" +
" \"searchCondition\": {" +
" \"conditions\": [" +
"{" +
" \"conditionType\": \"Name\","+
" \"Value\": 200," +
" }"+
"]" +
"}," +
"\"outputMethod\": \"split\","+
"\"zipFileName\": \"DDD.zip\"" +
"}";
public String execute() throws IOException{
//1.接続するための設定をする
// URL に対して openConnection メソッドを呼び出すし、接続オブジェクトを生成
URL url = new URL(apiURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// HttpURLConnectionの各種設定
//HTTPのメソッドをPOSTに設定
conn.setRequestMethod("POST");
//リクエストボディへの書き込みを許可
conn.setDoInput(true);
//レスポンスボディの取得を許可
conn.setDoOutput(true);
//リクエスト形式をJsonに指定
conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
// 2.接続を確立する
conn.connect();
// 3.リクエスとボディに書き込みを行う
//HttpURLConnectionからOutputStreamを取得し、json文字列を書き込む
PrintStream ps = new PrintStream(conn.getOutputStream());
ps.print(json);
ps.close();
// 4.レスポンスを受け取る
//正常終了時はHttpStatusCode 200が返ってくる
if (conn.getResponseCode() != 200) {
//エラー処理
}
//HttpURLConnectionからInputStreamを取得し、読み出す
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}
// 5.InputStreamを閉じる
br.close();
//結果は呼び出し元に返しておく
return sb.toString();
}
}
参考
HtppURLConnectionの設定には以下のようなメソッドを使用します。詳しくは公式リファレンスなどを参考にして下さい
セットアップパラメータを修正するには次のメソッドを使用します。
・setAllowUserInteraction
・setDoInput
・setDoOutput
・setIfModifiedSince
・setUseCaches
一般要求プロパティーを修正するには次のメソッドを使用します。
・setRequestProperty