LoginSignup
10
12

More than 3 years have passed since last update.

JavaでJsonをPOSTする〜HttpURLConnection〜

Last updated at Posted at 2020-07-25

概要

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

10
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12