JAVA 送出 application/json

如何使用java 原生 HttpURLConnection 送出一個 json 格式的 POST

以下是個範例,會將一個json 字串使用POST方式送往 slack 的機器人,值得一提的是json 內容其實是個字串,必須使用writeBytes 將資料送出。



	public static void main(String[] arg) {
		String QueryStr = "{\"text\":\"I am a bot make by Quanto !!!   Hello, BOBt!\"}";
		String ret = "";
		String urlString = "https://hooks.slack.com/services/T6PQXXXXXXXXX";
		String host = "hooks.slack.com";
		String url = "services/TXXXXXXXXXXXXXXXXXXXXXXXXX";
		ret = httpConnectionPostJSON(urlString, QueryStr);
		System.out.println(ret);
	}
	
	public static String httpConnectionPostJSON(String apiUrl,String params) {
        HttpURLConnection conn = null;
        StringBuilder response = new StringBuilder();

        try {
            URL url = new URL(apiUrl);
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("Content-Type","application/json; charset=UTF-8");
            conn.setRequestProperty("Accept", "application/json");
            conn.setRequestMethod("POST");
            conn.setConnectTimeout(10000);
            conn.setReadTimeout(10000);
            conn.setDoInput(true); //允許輸入流,即允許下載
            conn.setDoOutput(true); //允許輸出流,即允許上傳
            conn.setUseCaches(false); //設置是否使用緩存

            OutputStream os = conn.getOutputStream();
            DataOutputStream writer = new DataOutputStream(os);
            String jsonString = params;
            writer.writeBytes(jsonString);
            writer.flush();
            writer.close();
            os.close();
            //Get Response
            InputStream is = conn.getInputStream();

            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            String line;

            while ((line = reader.readLine()) != null) {
                response.append(line);
                response.append('\r');
            }
            reader.close();
        }catch (Exception ex) {
            ex.printStackTrace();
        }finally {
            if(conn!=null) {
                conn.disconnect();
            }
        }

        return response.toString();
    }

發佈留言