核心步驟
- 建立
URL 物件並取得 URLConnection
- 設定
connection.setDoOutput(true) 啟用輸出模式
- 取得
OutputStream,包裝為 OutputStreamWriter 寫入表單資料
flush() 並 close() 完成送出
- 透過
connection.getInputStream() 讀取伺服器回應
完整程式碼範例
URL url = new URL("https://example.com/login.cgi");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
try (OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8")) {
out.write("username=admin&password=secret");
out.flush();
}
// 讀取回應
try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
}
實際發送的 HTTP 封包樣貌
POST /login.cgi HTTP/1.0
Accept: text/plain
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
username=admin&password=secret
常見應用場景
- 模擬瀏覽器表單提交、API 呼叫、Web Service 整合
- 需攜帶大量資料或避免 URL 參數過長時優先選用 POST
進階提示
- 需處理 Cookie/Session 時使用
CookieManager 或手動維護 Cookie Header
- HTTPS 網址同樣適用,底層自動協商 SSL/TLS
- 大量並發請求建議改用
HttpClient (Apache) 或 OkHttp 連線池管理