「Java8」HttpsURLConnection(HttpURLConnection)でJSON形式文字列をPOSTするサンプル
環境
JavaSE 1.8
Eclipse 4.14.0
構文
1.openConnection()
URLが参照するリモート・オブジェクトへの接続を表すURLConnectionインスタンスを返します。
2.setRequestMethod(String method)
URL要求のメソッドを次のどれかに設定します。GET POST HEAD OPTIONS PUT DELETE TRACEのうち、どれが有効であるかはプロトコルの制限によって決まります。
3.public void setRequestProperty(String key,String value)
パラメータ: key - 要求を識別するキーワード(「Accept」など)。 value - キーワードに関連した値。
4.public void setDoInput(boolean doinput)
このURLConnectionのdoInputフィールドの値を指定された値に設定します。
5.public void setDoOutput(boolean dooutput)
このURLConnectionのdoOutputフィールドの値を指定された値に設定します。
6.public OutputStream getOutputStream()throws IOException
この接続に書込みを行う出力ストリームを返します。
7.public int getResponseCode()throws IOException
HTTP応答メッセージからステータス・コードを取得します。
使用例
public String execute() throws IOException{
// HTTP(https)URL
String strUrl = "xxx";
// json形式の文字列
String strJson = "xxx";
//エンコーディングの宣言
String charSet = "UTF-8";
// 接続オブジェクトを生成
URL url = new URL(strUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//HTTPのメソッドをPOSTに設定
conn.setRequestMethod("POST");
//リクエストボディへの書き込みを許可
conn.setDoInput(true);
//レスポンスボディの取得を許可
conn.setDoOutput(true);
//リクエスト形式をJsonに指定
conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
// 接続
conn.connect();
// リクエスとボディに書き込みを行う
PrintStream ps = new PrintStream(conn.getOutputStream());
ps.print(strJson);
ps.close();
// レスポンスを受け取る
String responseCd = String.valueof(conn.getResponseCode());
if (responsCd != 200) {
//処理コード
}
//HttpURLConnectionからInputStreamを取得
BufferedReader bufferferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), charSet));
StringBuilder sb = new StringBuilder();
String str = null;
String result =null;
while ((str = ufferedReader.readLine()) != null) {
sb.append(str);
}
result = sb.toString();
// InputStreamを閉じる
BufferedReader.close();
//結果を返す
return result;
}
}
処理の流れについて説明
1).HttpURLConnectionで接続するための設定
2).HttpURLConnection接続確立
3).URLリクエストボディに書き込む
4).URLレスポンス結果を受け取る
5).Input/OutputStreamを閉じる
6).取得結果文字列を返す