「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).取得結果文字列を返す