首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 實現 HTTP GET/POST 請求並解析響應數據完整指南

     編輯:程式設計綜合問答

核心類選擇

  • HttpURLConnection:JDK 原生,無第三方依賴,適合簡單場景。
  • Apache HttpClient:功能豐富、連接池管理、自動重試,企業級首選。
  • OkHttp:現代、高效、支持 HTTP/2、協程友好,Android/Kotlin 推薦。

HttpURLConnection GET 請求示例

public static String doGet(String urlString, Map params) throws IOException {
    StringBuilder urlBuilder = new StringBuilder(urlString);
    if (params != null && !params.isEmpty()) {
        urlBuilder.append("?");
        params.forEach((k, v) -> urlBuilder.append(URLEncoder.encode(k, "UTF-8"))
                                          .append("=")
                                          .append(URLEncoder.encode(v, "UTF-8"))
                                          .append("&"));
        urlBuilder.deleteCharAt(urlBuilder.length() - 1);
    }

    HttpURLConnection conn = (HttpURLConnection) new URL(urlBuilder.toString()).openConnection();
    conn.setRequestMethod("GET");
    conn.setConnectTimeout(5000);
    conn.setReadTimeout(10000);

    try (BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
        StringBuilder response = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) response.append(line);
        return response.toString();
    }
}

HttpURLConnection POST 請求示例

public static String doPost(String urlString, String jsonBody) throws IOException {
    HttpURLConnection conn = (HttpURLConnection) new URL(urlString).openConnection();
    conn.setRequestMethod("POST");
    conn.setDoOutput(true);
    conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
    conn.setConnectTimeout(5000);
    conn.setReadTimeout(10000);

    try (OutputStream os = conn.getOutputStream()) {
        os.write(jsonBody.getBytes("UTF-8"));
    }

    try (BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
        StringBuilder response = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) response.append(line);
        return response.toString();
    }
}

最佳實踐清單

  1. 統一設置 User-Agent、Accept 頭,避免被服務端攔截。
  2. 使用連接池(HttpClient/OkHttp)複用連接,減少握手開銷。
  3. 對響應碼非 2xx 拋出自定義異常,記錄請求/響應日誌便於排查。
  4. 敏感參數(Token、密碼)僅走 HTTPS POST Body,禁止 URL 參數。
  5. 生產環境必須配置超時、重試策略、熔斷機制。

JSON 解析建議

配合 Gson、Jackson 或 Moshi 將響應字符串直接映射為 Java Bean,避免手動解析 JSONObject 易出錯且難維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved