okHttp 发送表单请求

需要添加依赖

compile group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.9.0'
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response; import java.io.IOException; public class HttpPostExample {
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient(); // 创建请求体
RequestBody formBody = new FormBody.Builder()
.add("arg1", "xxx") // 表单字段1
.add("arg2", "aaa") // 表单字段2
.build(); // 创建请求对象
Request request = new Request.Builder()
.url("https://example.com/submit")
.post(formBody) // 使用POST请求方法
.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
.addHeader("Connection", "keep-alive")
.addHeader("Cookie", "xxx")
.addHeader("Host", "xxx") // 设置请求头,可选
.build(); try {
// 执行请求
Response response = client.newCall(request).execute();
// 处理响应
if (response.isSuccessful()) {
String responseBody = response.body().string();
System.out.println("Response: " + responseBody);
} else {
System.err.println("Request failed: " + response.code() + " " + response.message());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

httpclient 发送表单请求

需要添加依赖

compile 'org.apache.httpcomponents:httpclient:4.3.5'
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.http.util.EntityUtils;
import java.net.URLEncoder; import java.io.IOException; public class HttpClientExample {
public static void main(String[] args) {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
// 目标 URL
String apiUrl = "https://example.com/submit"; // 创建 POST 请求
HttpPost httpPost = new HttpPost(apiUrl); // 自定义请求头
Header[] headers = {
new BasicHeader("Server", "nginx"),
new BasicHeader("Host", "example.com"),
new BasicHeader("Accept", "*/*"),
new BasicHeader("Accept-Encoding", "gzip, deflate, br"),
new BasicHeader("Connection", "keep-alive"),
new BasicHeader("Cookie", "xxx"),
new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
)
};
httpPost.setHeaders(headers); // 构建表单内容
String formData = "arg1=xxx&args2=xxx";
// 某些参数需要encode的,则需要
// String args3 = URLEncoder.encode(args3,"UTF-8");
// 设置请求体
StringEntity entity = new StringEntity(formData);
httpPost.setEntity(entity); // 发送请求
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
// 获取响应实体
HttpEntity responseEntity = response.getEntity(); // 打印响应状态码
System.out.println("Response Code: " + response.getStatusLine().getStatusCode()); // 打印响应内容
String responseBody = EntityUtils.toString(responseEntity);
System.out.println("Response Data: " + responseBody);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

Java 本身工具包

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder; public class PostRequestExample {
public static void main(String[] args) {
try {
// 目标 URL
String url = "https://example.com/submit"; // 创建 URL 对象
URL apiUrl = new URL(url); // 打开连接
HttpURLConnection connection = (HttpURLConnection) apiUrl.openConnection(); // 设置请求方法为 POST
connection.setRequestMethod("POST"); // 设置自定义请求头
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
connection.setRequestProperty("Accept", "*/*");
connection.setRequestProperty("Cookie", "xxx");
connection.setRequestProperty("Connection", "keep-alive"); // 启用输入和输出流
connection.setDoOutput(true); // 构建表单内容
String formData = "arg1=xxx&args2=xxx";
// 某些参数需要encode的,则需要
// String args3 = URLEncoder.encode(args3,"UTF-8"); // 将表单内容写入请求体
try (OutputStream os = connection.getOutputStream()) {
byte[] input = formData.getBytes("utf-8");
os.write(input, 0, input.length);
} // 获取响应代码
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode); // 读取响应内容
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close(); // 输出响应内容
System.out.println("Response: " + response.toString());
} else {
System.out.println("Request failed.");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

HTTP表单请求的更多相关文章

  1. java如何区分是form表单请求,还是ajax请求

    requestType = request.getHeader("X-Requested-With");                 if(requestType==null) ...

  2. Django之--POST方法处理表单请求

    上一篇:Django之--MVC的Model 演示了如何使用GET方法处理表单请求,本文讲述直接在当前页面返回结果,并使用更常用的POST方法处理. 一.首先我们修改下page.html <!D ...

  3. Laravel 更新数据时在表单请求验证中排除自己,检查指定字段唯一性

    原文地址:https://moell.cn/article/24 不错的laravel网站 需求场景 修改用户信息时,在表单请求验证中排除当前邮箱所在的记录行,并检查邮箱的唯一性. Laravel版本 ...

  4. 当有多个form表单请求时如何处理?

    问题:当有多个表单请求时如何处理?两种获取form表单 name属性值来区分是哪一个form表单.问题:如何获取name的值呢?<form name="myForm" met ...

  5. 通过C#的HttpClient模拟form表单请求

    post提交表单一般无非是一般text文本和文件类型,如下 <input type="file"/> <input type="text"/& ...

  6. Laravel 表单验证创建“表单请求”实现自定义请求类

    按照文档创建表单请求自定义类以后,调用总是403页面,咨询大佬说: public function authorize() { // 在表单验证类的这个方法这里要返回true,默认返回false,这个 ...

  7. 在Express 中获取表单请求体数据

    在Express 中获取表单请求体数据 获取 GET 请求参数 获取 POST 请求体数据 安装 配置 获取 GET 请求参数 Express 内置了一个 API , 可以直接通过 req.query ...

  8. [水煮 ASP.NET Web API2 方法论](1-3)如何接收 HTML 表单请求

    问题 我们想创建一个能够处理 HTML表单的 ASP.NET Web API 应用程序(使用 application/x-www-form-urlencoded 方式提交数据). 解决方案 我们可以创 ...

  9. RestTemplate进行表单请求,注意要使用MultiValueMap

    在对接API的时候,有时候文档中会说,表单提交,这时候就需要用到 MultiValueMap来操作,下面给大家展示一个简单的demo. MultiValueMap<Object, Object& ...

  10. laravel中的表单请求类型和CSRF防护(六)

    laravel中为我们提供了绑定不同http请求类型的函数. Route::get('/test', function () {}); Route::post('/test', function () ...

随机推荐

  1. ctfshow--web9 md5二进制格加密的绕过

    dirsearch 扫到robots文件 查看一下 发现有个index.phps文件 访问这个index.phps,可以下载下来 我们来审计一下这里的代码 <?php $flag="& ...

  2. rpc项目中的长连接与短连接的思考

    对于rpc项目,在接受大佬指导的时候曾问过对于长连接和短连接是处理处理的,在面试的时候也被问起socket是长连接还是短连接,发现自己没有好好思考过这个问题,因此好好总结一下. 前置知识点:rpc基础 ...

  3. dart安装教程详解

    官网 https://dart.dev 关于发布通道和版本字符串 Dart SDK有三个发布通道: 1==>:稳定释放,大约每三个月更新一次: 稳定释放适合生产使用. 2==>:预览发布, ...

  4. JS深度理解

    事件循环 程序运行需要有自己专属的内存空间,可以把这块内存简单理解为进程 每个应用至少有一个进程,进程间相互独立,要通信,也需要双方同意 线程 有进程后,就可以运行程序的代码 运行代码的 [人] 称为 ...

  5. Q:Linux下处理^M字符

    Linux下处理^M字符,很多时候windows环境中编辑过的文件,在Linux下经常会出现^M字符,可以通过以下方式处理该字符. 方法一:vim命令打开文件,然后在vim命令模式下输入以下内容: 1 ...

  6. THUWC2025 游记

    Day -C 先进入金国大臣面积群,然后发现 xyf 又在行联考学生群故事. Day -1 早上赶飞机进京.飞机上启动钢丝.到达大兴机场之后坐火车前往北京西站,然后坐地铁到海淀黄庄.非常饿,但是决定先 ...

  7. 分合之道:最小生成树的 Kruskal 与 Prim 算法

    最小生成树问题 想象你是一位城市规划师,面前摊开一张地图,标记着散落的村庄.你的任务是用最经济的成本,在村庄间铺设道路,让所有村庄互通.这个问题看似简单,却隐藏着一个经典的数学命题:如何在一张&quo ...

  8. 泰山派(Linux)播放音乐

    泰山派(Linux)录音/播放音乐 alsamixer ​ 声卡: ​ 播放:play(较详细),aplay 录音:arecord ​ 麦克风可用: Main_mic可用 录音(wav/mp3) ar ...

  9. 怎么证明二元函数的极限是多少?& 怎么证明二元函数的极限不存在?

    怎么证明二元函数的极限是多少:https://zhaokaifeng.com/16589/ 怎么证明二元函数的极限不存在:https://zhaokaifeng.com/16600/

  10. PIP 换源:提升 Python 包安装速度的秘诀

    一.引言 在使用 Python 进行开发时,我们经常需要通过 pip 命令安装各种库和依赖.然而,默认的源可能会因为网络原因导致下载速度缓慢,影响开发效率.这时候,换源就成为了一个非常实用的技巧. 二 ...