1. 程式人生 > >java利用post方法請求網路介面

java利用post方法請求網路介面

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();
		}
	}
}