当前位置: 首页 > news >正文

Java 发送 HTTP POST请求教程

Java 发送 HTTP POST 请求的方法

使用 HttpURLConnection(原生 Java 支持)
创建一个 HttpURLConnection 对象,设置请求方法为 POST,并写入请求体数据。以下是一个简单示例:

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;public class HttpPostExample {public static void main(String[] args) throws Exception {String url = "https://example.com/api";String postData = "param1=value1¶m2=value2";URL obj = new URL(url);HttpURLConnection con = (HttpURLConnection) obj.openConnection();con.setRequestMethod("POST");con.setDoOutput(true);try (OutputStream os = con.getOutputStream()) {byte[] input = postData.getBytes("utf-8");os.write(input, 0, input.length);}int responseCode = con.getResponseCode();System.out.println("Response Code: " + responseCode);}
}

使用 HttpClient(Java 11+ 推荐)
HttpClient 是 Java 11 引入的现代化 HTTP 客户端,支持异步和同步请求:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;public class HttpClientPostExample {public static void main(String[] args) throws Exception {HttpClient client = HttpClient.newHttpClient();String requestBody = "{\"key\":\"value\"}";HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://example.com/api")).header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.ofString(requestBody)).build();HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());}
}

使用第三方库(如 OkHttp
OkHttp 是流行的第三方 HTTP 客户端库,简化了请求处理:

import okhttp3.*;public class OkHttpPostExample {public static void main(String[] args) throws Exception {OkHttpClient client = new OkHttpClient();MediaType mediaType = MediaType.parse("application/json");String requestBody = "{\"key\":\"value\"}";Request request = new Request.Builder().url("https://example.com/api").post(RequestBody.create(requestBody, mediaType)).build();try (Response response = client.newCall(request).execute()) {System.out.println(response.body().string());}}
}

常见参数设置

  • 请求头:通过 setRequestPropertyheader() 方法添加,如 Content-Type
  • 超时设置HttpURLConnection 使用 setConnectTimeout()HttpClient 通过 Builder 配置。
  • 表单数据:格式为 key1=value1&key2=value2,需设置 Content-Type: application/x-www-form-urlencoded
  • JSON 数据:设置 Content-Type: application/json,并发送 JSON 字符串。

错误处理

  • 检查响应状态码(如 200 表示成功)。
  • 捕获 IOException 处理网络异常。
  • 使用 try-with-resources 确保资源释放。
http://www.dtcms.com/a/314427.html

相关文章:

  • 回归预测 | MATLAB实现BP神经网络多输入单输出回归预测+SHAP可解释分析
  • 基于Matlab的聚类彩色图像分割系统
  • 基于MATLAB实现的心电图自动诊断系统
  • 各种信号分解、模态分解方法合集【MATLAB实现】
  • 链表问题解决分析框架
  • python与C++
  • 【RH124知识点问答题】第7章 控制对文件的访问
  • 【秋招笔试】2025.08.03虾皮秋招笔试-第一题
  • 芯片行业中的EDA(电子设计自动化)是什么?
  • 房屋租赁小程序租房小程序房产信息发布系统房屋租赁微信小程序源码
  • 用户管理——配置文件和命令
  • 探索机器学习在医疗领域的应用与挑战
  • Visual Studio 2022安装与快捷键全攻略
  • AI产品经理面试宝典第61天:AI产品体验、数据安全与架构实战解析
  • Linux中netstat详细使用指南
  • 开源的现代数据探索和可视化平台:Apache Superset 架构组件和安装方式 Kubernetes Docker Compose PyPI
  • 服务器突然之间特别卡,什么原因?
  • 为什么要烧录固件?——从生产到运维的全流程解析
  • k8s学习
  • 佚名运维训练营-第1天
  • 2025-08-04-零成本搭建 AI 应用!Hugging Face 免费 CPU 资源实战指南
  • 飞算JavaAI编程插件:以AI之力赋能Java开发,让编码效率再升级
  • 37. line-height: 1.2 与 line-height: 120% 的区别
  • 总结成人本科毕业前有哪些任务?
  • C++面试题及详细答案100道( 01-10 )
  • Android 分析底电流高即功耗大的几个方面
  • React 19 + Next.js 15 中实现混合布局
  • React Hooks 原理深度解析与最佳实践
  • Spring IoC容器与Bean管理
  • labview连接PLC的三种方式