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.pswp.cn/diannao/94663.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机英语详细总结

计算机英语作为信息技术领域的专用语言&#xff0c;融合了专业术语、缩写、行业表达及技术文档规范&#xff0c;是学习编程、从事 IT 工作的核心工具。以下从核心分类、应用场景、学习方法三方面详细梳理&#xff1a;一、核心术语分类与高频词汇1. 编程语言与语法基础基础概念&…

「日拱一码」045 机器学习-因果发现算法

目录 基于约束的方法 (Constraint-based) 基于评分的方法 (Score-based) 基于函数因果模型的方法 (Functional Causal Models) 基于梯度的方法 (Gradient-based) 因果发现是机器学习中一个重要的研究方向&#xff0c;它旨在从观测数据中推断变量之间的因果关系 基于约束的…

S7-1200 串行通信介绍

S7-1200 串行通信S7-1200支持的串行通讯方式点对点&#xff08;PtP&#xff09;通信Modbus 主从通信USS 通信名称CM 1241 RS232CM 1241 RS422/485CB 1241 RS485订货号6ES7241-1AH32-0XB06ES7241-1CH32-0XB06ES7241-1CH30-1XB0通讯口类型RS232RS422/RS485RS485波特率(bps)300 ;6…

达梦包含OR条件的SQL特定优化----INJECT-HINT优化方法

Time:2025/08/07Author:skatexg应用迭代发版须执行如下动作 1、按目标需求全面压力测试&#xff0c;优化潜在慢SQL或设置特殊优化参数(如&#xff1a;OPTIMIZER_OR_NBEXP) 2、达梦数据库有数据导入&#xff0c;必须收集统计信息达梦使用SF_INJECT_HINT系统函数对指定SQL增加HIN…

JSqlParser学习笔记 快速使用JSqlParser

文章目录前言本章节源码官方文档信息认识JSqlParserHow it works? 它是如何工作的&#xff1f;知识点关于statement实际应用场景引入依赖Parser 解析SQL解析sql语句解析sql区分sql类型分析增删改查语句查询语句认识PlainSelect示范新增语句了解Insert常用方法示范更新语句删除…

Godot ------ 中级人物血条制作01

Godot ------ 中级人物血条制作 引言 正文 传统血条制作 方格血条制作 传奇,暗黑破环神类血条显示 引言 在此之前,我们分四篇介绍了 Godot 中人物血条的制作,但是我们用到的都是比较基础的节点 ProgressBar,本文我们将介绍另外一种相对高级的节点 TextureProgressBar。 正…

《WebPages 类:构建高效网页的基石》

《WebPages 类&#xff1a;构建高效网页的基石》 引言 在互联网高速发展的今天&#xff0c;网页作为信息传递和交互的重要载体&#xff0c;其重要性不言而喻。而一个高效、美观、易用的网页&#xff0c;往往离不开一个优秀的网页类的设计。本文将深入探讨WebPages类的概念、特点…

直播预告|鸿蒙生态下的 Flutter 开发实战

《开发者 面对面》坚果派特辑直播&#xff08;二&#xff09;来了&#xff01;在鸿蒙系统日益完善的今天&#xff0c;Flutter 开发者将迎来哪些新机遇&#xff1f;在 HarmonyOS 上开发 Flutter&#xff0c;如何实现高效适配与生态融合&#xff1f;本期「开发者面对面」坚果派特…

web前端结合Microsoft Office Online 在线预览,vue实现(PPT、Word、Excel、PDF等)

web前端结合Microsoft Office Online 在线预览&#xff0c;vue实现&#xff08;PPT、Word、Excel、PDF等&#xff09; 什么是 Microsoft Office Online 预览服务 Microsoft Office Online 预览服务是由微软提供的免费在线文档预览工具&#xff0c;通过简单的 URL 参数配置&am…

安卓手机用久了会出现卡顿,为什么?

安卓手机用久了出现卡顿&#xff0c;主要与内存不足、系统机制特性、硬件老化、软件冲突与冗余、使用习惯不当五大核心因素相关。以下是具体原因及针对性解决方案&#xff1a;一、卡顿核心原因分析内存不足运行内存&#xff08;RAM&#xff09;被占用&#xff1a;安卓应用默认在…

以 Eland 玩转 Elasticsearch 8.12 Learning-to-Rank

1 为什么要在 Elasticsearch 上做 LTR&#xff1f; 适用版本&#xff1a; Elasticsearch ≥ 8.12.0 前置条件&#xff1a; 需拥有包含 “Serverless LTR” 的订阅等级&#xff08;详见官方订阅矩阵&#xff09; 技术栈&#xff1a; Elasticsearch Python Eland XGBoost / Li…

OpenCV入门:图像处理基础教程

OpenCV简介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习库。它包含超过2500种优化算法&#xff0c;涵盖图像处理、物体识别、人脸检测、3D重建、视频分析等任务。 核心功能 图像处理&#xff1a;滤波、边缘检测、几…

影响内容传播速度的因素有哪些?

内容的传播速度是我们在衡量营销效果时的重要指标。传播速度越快&#xff0c;越能帮助品牌迅速覆盖目标受众&#xff0c;在短时间内提升影响力。影响内容传播速度的方式来自多个方面&#xff0c;下面就让我们一同来了解下这其中的因素。一、观点价值观点是否具有价值&#xff0…

css动态样式

使用scss通过变量设置css动态样式<template><div><!-- 方式一 --><p v-for"(item, index) in dataList" :key"index" :style"{--color: item.color}" >{{item.name}}</p><!-- 方式二 --><p v-for"(…

开源流媒体服务器ZLMediaKit 的Java Api实现的Java版ZLMediaKit流媒体服务器-二开视频对话

安全性&#xff1a;使用了WSS&#xff08;WebSocket Secure&#xff09;协议确保通信安全 兼容性&#xff1a;支持现代浏览器的WebRTC功能 信令机制&#xff1a;通过WebSocket进行信令交换&#xff0c;确保连接建立 媒体传输&#xff1a;使用STUN服务器进行NAT穿透&#xff0c;…

mariadb10.3.35备份脚本

一、创建备份用户[(none)]> create user buserlocalhost identified by tmrQ;[(none)]> GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO buserlocalhost;[(none)]> flush privileges;二、脚本# cat mysql_bask.sh #!/bin/bash # MariaDB 10.3.35…

W3D引擎游戏开发----从入门到精通【22】

配置完成基本DT物体项后&#xff0c;在这个DT物体项中开始添加这个玩家的动画信息&#xff0c;如下所示。UseAnim设置是否使用动画功能&#xff0c;这里开启。AnimTypeN设置总共的动画类型数&#xff0c;当前只有一个待机动画&#xff0c;因此设置为1。AnimType1FrameN设置1号动…

在我国申请注册的商标在国外可以用不!

近日一个网友找到普推知产商标老杨&#xff0c;问在我国申请注册商标在新加坡和欧盟可以用不&#xff0c;当然用不成&#xff0c;根据商标法的地域性原则&#xff0c;商标权保护限于注册地&#xff0c;驰名商标享有部分跨国保护&#xff0c;但是这个要有所在国相关法律证据。如…

在开发板上画出一个2048棋盘的矩阵

#include “head.h"int* p lcd NULL; //显示屏内存映射的起始地址int g lcd width; //LCD显示屏的宽度int g lcd high ; //LCD显示屏的高度int g lcd bpp; //每个像素点所占的比特位//int x:屏的X轴&#xff08;宽度、列&#xff09;坐标//int y:屏幕y轴&#xff08;高度、…

开源软件与文化:从嬉皮士精神到数字时代的协同创新

开源软件与文化&#xff1a;从嬉皮士精神到数字时代的协同创新 本文章由笔者使用提示词驱动AI创作&#xff0c;并进行审阅。 文章目录开源软件与文化&#xff1a;从嬉皮士精神到数字时代的协同创新一、引言&#xff1a;开源的文化基因与技术革命二、开源软件的文化根源&#x…