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

Java

Posted by arkgame