最简单、直接、能直接运行的 Java POST 请求代码,用最常用的 HttpClient(Java 11+ 内置,无需引包),直接复制就能用。
Java 发送 POST 请求(JSON 格式,最常用)
下面是完整工具类,包含:
- 发送 POST 请求
- 传 JSON 参数
- 获取返回结果
- 异常处理
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
public class PostRequestUtil {
public static void main(String[] args) {
// 1. 你要请求的接口地址
String url = "https://httpbin.org/post"; // 测试接口,可替换成你自己的
// 2. 接口需要的参数(JSON 格式)
String jsonParams = "{\"username\":\"test\",\"password\":\"123456\"}";
// 3. 发送请求并获取结果
String result = sendPostJson(url, jsonParams);
// 4. 打印返回结果
System.out.println("接口返回结果:");
System.out.println(result);
}
/**
* 发送 POST 请求(参数为 JSON 格式)
* @param url 接口地址
* @param jsonParams JSON 参数
* @return 接口返回的字符串
*/
public static String sendPostJson(String url, String jsonParams) {
// 创建 HTTP 客户端
HttpClient client = HttpClient.newHttpClient();
// 构建请求
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
// POST 请求 + JSON 参数
.POST(HttpRequest.BodyPublishers.ofString(jsonParams, StandardCharsets.UTF_8))
// 设置请求头(必须!告诉接口传的是 JSON)
.header("Content-Type", "application/json; charset=UTF-8")
.build();
try {
// 发送请求并获取响应
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
// 返回响应体内容
return response.body();
} catch (Exception e) {
e.printStackTrace();
return "请求失败:" + e.getMessage();
}
}
}
运行结果
你直接运行 main 方法,就能看到:
plaintext
接口返回结果:
{
"args": {},
"data": "{\"username\":\"test\",\"password\":\"123456\"}",
"files": {},
"form": {},
"headers": {
"Content-Length": "39",
"Content-Type": "application/json; charset=UTF-8",
"Host": "httpbin.org",
"User-Agent": "Java-http-client/17.0.10"
},
"json": {
"password": "123456",
"username": "test"
},
"origin": "xxx.xxx.xxx.xxx",
"url": "https://httpbin.org/post"
}
你只需要改 2 个地方就能用在你的项目里
- 接口地址
java
运行
String url = "你的接口地址"; - 请求参数
java
运行
String jsonParams = "{你的JSON参数}";
如果你需要表单格式(form-data)
我也给你准备好:
java
运行
public static String sendPostForm(String url, Map<String, String> params) {
HttpClient client = HttpClient.newHttpClient();
// 拼接表单参数
String formData = params.entrySet().stream()
.map(e -> e.getKey() + "=" + URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
.collect(Collectors.joining("&"));
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString(formData))
.build();
try {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
return response.body();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
总结
- 这是 Java 11+ 官方原生 HttpClient,不用引任何包
- 代码直接运行、直接复制
- 支持 JSON / 表单 两种最常用 POST 格式
- 返回结果直接拿到
String,你想解析、存库都可以
需要我帮你对接你真实的接口吗?把接口地址 + 参数格式发我,我直接帮你改成可运行代码。
如何在 Java 中处理接口返回的 JSON 数据?
在 Java 里处理接口返回的 JSON,最常用的是 Jackson 或 Gson 这两个库。下面我用最简单、最实用的方式教你:拿到接口返回的 JSON 字符串 → 转成 Java 对象 / Map → 直接取值。
一、先引入依赖(二选一)
1. 使用 Jackson(Spring 默认,最常用)
Maven:
xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
2. 使用 Gson(谷歌出品,轻量)
Maven:
xml
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
二、假设接口返回 JSON 如下
json
{
"code": 200,
"msg": "请求成功",
"data": {
"id": 1001,
"username": "zhangsan",
"age": 25
}
}
三、方式 1:JSON → Java 对象(最规范)
1. 先建实体类
java
运行
import lombok.Data;
// 整体返回结构
@Data
public class ApiResult {
private Integer code;
private String msg;
private User data;
}
// data 里的用户对象
@Data
public class User {
private Integer id;
private String username;
private Integer age;
}
不用 Lombok 就手写 getter/setter。
2. Jackson 解析
java
运行
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonTest {
public static void main(String[] args) throws Exception {
// 接口返回的 JSON 字符串
String json = "{\"code\":200,\"msg\":\"请求成功\",\"data\":{\"id\":1001,\"username\":\"zhangsan\",\"age\":25}}";
ObjectMapper mapper = new ObjectMapper();
ApiResult result = mapper.readValue(json, ApiResult.class);
// 直接取值
System.out.println(result.getCode()); // 200
System.out.println(result.getMsg()); // 请求成功
System.out.println(result.getData().getUsername()); // zhangsan
}
}
3. Gson 解析
java
运行
import com.google.gson.Gson;
public class JsonTest {
public static void main(String[] args) {
String json = "{\"code\":200,\"msg\":\"请求成功\",\"data\":{\"id\":1001,\"username\":\"zhangsan\",\"age\":25}}";
Gson gson = new Gson();
ApiResult result = gson.fromJson(json, ApiResult.class);
System.out.println(result.getCode());
System.out.println(result.getData().getUsername());
}
}
四、方式 2:JSON → Map(快速取值,不用建类)
适合不想写实体类、临时解析的场景。
Jackson 转 Map
java
运行
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = mapper.readValue(json, Map.class);
int code = (int) map.get("code");
String msg = (String) map.get("msg");
Map<String, Object> data = (Map) map.get("data");
String username = (String) data.get("username");
Gson 转 Map
java
运行
Gson gson = new Gson();
Map<String, Object> map = gson.fromJson(json, Map.class);
double code = (double) map.get("code"); // Gson 数字默认 double
String username = (String) ((Map) map.get("data")).get("username");
五、结合你刚才的 POST 请求完整示例
把 POST 请求 + JSON 解析放一起:
java
运行
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
public class PostWithJsonParse {
public static void main(String[] args) throws Exception {
String url = "https://httpbin.org/post";
String jsonParams = "{\"username\":\"test\",\"password\":\"123456\"}";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.POST(HttpRequest.BodyPublishers.ofString(jsonParams))
.header("Content-Type", "application/json")
.build();
// 获取返回 JSON
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
// 解析 JSON
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> resultMap = mapper.readValue(json, Map.class);
System.out.println("url: " + resultMap.get("url"));
System.out.println("data: " + resultMap.get("data"));
}
}
六、常见小问题
- 字段名不一致:用
@JsonProperty("user_name") - JSON 数组:转
List<实体类>- Jackson:
List<User> list = mapper.readValue(json, new TypeReference<>(){});
- Jackson:
- null 值:解析不会报错,会自动为 null
3912

被折叠的 条评论
为什么被折叠?



