package com.example.demo; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Date; public class HttpRequest { public static void main(String []args) throws IOException, JSONException { //請求url String serverURL = "https://service.test.com/sv-sp/truenate"; URL url = new URL(serverURL); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("POST"); connection.setDoInput(true); connection.setDoOutput(true); //header參數connection.setRequestProperty("鍵","值"); connection.setRequestProperty("Content-Type", "application/json"); connection.connect(); OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(),"UTF-8"); //獲取當前時間戳 long time = new Date().getTime(); JSONArray jsonArray = new JSONArray(); JSONObject parm1 = new JSONObject(); parm1.put("signame","local"); parm1.put("timestamp",time); parm1.put("value",str); //請求包含數組時時,先將數組參數放入JSONArray jsonArray.put(parm1); //body參數 JSONObject parm2 = new JSONObject(); parm2.put("id","1001"); parm2.put("signals", jsonArray); parm2.put("vinne","V2001"); writer.write(parm2.toString()); writer.flush(); StringBuffer sbf = new StringBuffer(); String strRead = null; // 返回結果-字節輸入流轉換成字符輸入流,控制台輸出字符 InputStream is = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); while ((strRead = reader.readLine()) != null) { sbf.append(strRead); sbf.append("\r\n"); } reader.close(); connection.disconnect(); String results = sbf.toString(); System.out.println(results); } }
ps:請求頭 Connection,Connection設置為 keep-alive用於說明 客戶端這邊設置的是,本次HTTP請求之后並不需要關閉TCP連接,這樣可以使下次HTTP請求使用相同的TCP通道,節省TCP建立連接的時間
