Files
2026-04-30 10:47:26 +08:00

110 lines
3.6 KiB
Java
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package org.example;
/**
* packageName com.example.demo
*
* @author congtiexin
* @date 2025/6/3
* @description TODO
*/
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpUtils {
private static final Gson gson = new Gson();
/**
* 发送 POST 请求并返回 JSON 响应
*
* @param url 请求地址
* @param request 请求对象(Java Bean 或 Map
* @return 响应内容(Map 或 自定义对象)
*/
public static <T> T postJson(String url, Object request, Class<T> responseType) throws Exception {
HttpURLConnection connection = null;
try {
// 初始化连接
connection = (HttpURLConnection) new URL(url).openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
connection.setRequestProperty("Accept", "application/json");
connection.setDoOutput(true);
// 序列化请求体
String jsonInput = gson.toJson(request);
try (OutputStream os = connection.getOutputStream()) {
os.write(jsonInput.getBytes("UTF-8"));
os.flush();
}
// 处理响应
int responseCode = connection.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK) {
throw new RuntimeException("请求失败,状态码: " + responseCode);
}
StringBuilder response = new StringBuilder();
try (BufferedReader br = new BufferedReader(
new InputStreamReader(connection.getInputStream(), "UTF-8"))) {
String line;
while ((line = br.readLine()) != null) {
response.append(line);
}
}
// 反序列化响应
return gson.fromJson(response.toString(), responseType);
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
/**
* 快速发送 JSON POST 请求并返回原始字符串响应
*/
public static String postJson(String url, String jsonBody) throws Exception {
HttpURLConnection connection = null;
try {
connection = (HttpURLConnection) new URL(url).openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
connection.setDoOutput(true);
try (OutputStream os = connection.getOutputStream()) {
byte[] input = jsonBody.getBytes("UTF-8");
os.write(input, 0, input.length);
os.flush();
}
int responseCode = connection.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK) {
throw new RuntimeException("请求失败,状态码: " + responseCode);
}
StringBuilder response = new StringBuilder();
try (BufferedReader br = new BufferedReader(
new InputStreamReader(connection.getInputStream(), "UTF-8"))) {
String line;
while ((line = br.readLine()) != null) {
response.append(line);
}
}
return response.toString();
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
}