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();
}
}
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();
}
}
User-Agent、Accept 頭,避免被服務端攔截。配合 Gson、Jackson 或 Moshi 將響應字符串直接映射為 Java Bean,避免手動解析 JSONObject 易出錯且難維護。