java利用post方法請求網路介面
阿新 • • 發佈:2019-01-09
public class Post { public static final String POST_URL = "https://xxxxxxxxxxxxxxxxx"; public static void httpURLConnectionPOST(String parm) {//parm 你要post的資料 PrintWriter out = null; try { URL url = new URL(POST_URL); // 將url以open方法返回的urlConnection 連線強轉為HttpURLConnection連線 // (標識一個url所引用的遠端物件連線) // 此時cnnection只是為一個連線物件,待連線中 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 設定連線輸出流為true,預設false (post請求是以流的方式隱式的傳遞引數) connection.setDoOutput(true); // 設定連線輸入流為true connection.setDoInput(true); // 設定請求方式為post connection.setRequestMethod("POST"); // post請求快取設為false connection.setUseCaches(false); // 設定該HttpURLConnection例項是否自動執行重定向 connection.setInstanceFollowRedirects(true); // 設定請求頭裡面的各個屬性 (以下為設定內容的型別) // application/x-javascript text/xml->xml資料 // application/x-javascript->json物件 // application/x-www-form-urlencoded->表單資料 // ;charset=utf-8 必須要,不然會出現亂碼 //該樣例使用json物件進行請求 connection.setRequestProperty("Content-Type", "application/x-javascript;charset=utf-8"); // 建立連線 connection.connect(); // 建立輸入輸出流,用於往連線裡面輸出攜帶的引數,記得設定引數編碼格式 OutputStreamWriter outWriter = new OutputStreamWriter(connection.getOutputStream(), "utf-8"); out = new PrintWriter(outWriter); // 將引數輸出到連線 out.print(parm); // 輸出完成後重新整理並關閉流 out.flush(); out.close(); System.out.println(connection.getResponseCode());// 不是200的請跳樓 // 連線發起請求,處理伺服器響應 (從連接獲取到輸入流幷包裝為bufferedReader) BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String line; StringBuilder sb = new StringBuilder(); // 用來儲存響應資料 // 迴圈讀取流,若不到結尾處 while ((line = bf.readLine()) != null) { sb.append(line).append(System.getProperty("line.separator")); } bf.close(); // 日常關流 connection.disconnect(); // 銷燬連線 } catch (Exception e) { e.printStackTrace(); } } }