用java请求一个post接口,并把返回的结果拿下来
最简单、直接、能直接运行的 Java POST 请求代码用最常用的HttpClientJava 11 内置无需引包直接复制就能用。Java 发送 POST 请求JSON 格式最常用下面是完整工具类包含发送 POST 请求传 JSON 参数获取返回结果异常处理javaimport 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; charsetUTF-8) .build(); try { // 发送请求并获取响应 HttpResponseString 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; charsetUTF-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, MapString, 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 { HttpResponseString 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. 使用 JacksonSpring 默认最常用Mavenxmldependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-databind/artifactId version2.15.2/version /dependency2. 使用 Gson谷歌出品轻量Mavenxmldependency groupIdcom.google.code.gson/groupId artifactIdgson/artifactId version2.10.1/version /dependency二、假设接口返回 JSON 如下json{ code: 200, msg: 请求成功, data: { id: 1001, username: zhangsan, age: 25 } }三、方式 1JSON → 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()); } }四、方式 2JSON → Map快速取值不用建类适合不想写实体类、临时解析的场景。Jackson 转 Mapjava运行ObjectMapper mapper new ObjectMapper(); MapString, Object map mapper.readValue(json, Map.class); int code (int) map.get(code); String msg (String) map.get(msg); MapString, Object data (Map) map.get(data); String username (String) data.get(username);Gson 转 Mapjava运行Gson gson new Gson(); MapString, 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 HttpResponseString response client.send(request, HttpResponse.BodyHandlers.ofString()); String json response.body(); // 解析 JSON ObjectMapper mapper new ObjectMapper(); MapString, 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实体类JacksonListUser list mapper.readValue(json, new TypeReference(){});null 值解析不会报错会自动为 null