「Java8」HttpsURLConnection(HttpURLConnection)でJSON形式文字列をPOSTするサンプル

環境
JavaSE 1.8
Eclipse 4.14.0

構文
1.openConnection()

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
URLが参照するリモート・オブジェクトへの接続を表すURLConnectionインスタンスを返します。
URLが参照するリモート・オブジェクトへの接続を表すURLConnectionインスタンスを返します。
URLが参照するリモート・オブジェクトへの接続を表すURLConnectionインスタンスを返します。

2.setRequestMethod(String method)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
URL要求のメソッドを次のどれかに設定します。GET POST HEAD OPTIONS PUT DELETE TRACEのうち、どれが有効であるかはプロトコルの制限によって決まります。
URL要求のメソッドを次のどれかに設定します。GET POST HEAD OPTIONS PUT DELETE TRACEのうち、どれが有効であるかはプロトコルの制限によって決まります。
URL要求のメソッドを次のどれかに設定します。GET POST HEAD OPTIONS PUT DELETE TRACEのうち、どれが有効であるかはプロトコルの制限によって決まります。

3.public void setRequestProperty(String key,String value)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
パラメータ:
key - 要求を識別するキーワード(「Accept」など)
value - キーワードに関連した値。
パラメータ: key - 要求を識別するキーワード(「Accept」など)。 value - キーワードに関連した値。
パラメータ:
key - 要求を識別するキーワード(「Accept」など)。
value - キーワードに関連した値。

4.public void setDoInput(boolean doinput)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
このURLConnectionのdoInputフィールドの値を指定された値に設定します。
このURLConnectionのdoInputフィールドの値を指定された値に設定します。
このURLConnectionのdoInputフィールドの値を指定された値に設定します。

5.public void setDoOutput(boolean dooutput)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
このURLConnectionのdoOutputフィールドの値を指定された値に設定します。
このURLConnectionのdoOutputフィールドの値を指定された値に設定します。
このURLConnectionのdoOutputフィールドの値を指定された値に設定します。

6.public OutputStream getOutputStream()throws IOException

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
この接続に書込みを行う出力ストリームを返します。
この接続に書込みを行う出力ストリームを返します。
この接続に書込みを行う出力ストリームを返します。

7.public int getResponseCode()throws IOException

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
HTTP応答メッセージからステータス・コードを取得します。
HTTP応答メッセージからステータス・コードを取得します。
HTTP応答メッセージからステータス・コードを取得します。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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;
}
}
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; } }
    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