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. VulNyx - System

    扫描发现 2121是ftp端口 8000 http的一个端口 6379redis端口 爆破redis的密码 爆破出来时bonjour 猜测ftp的密码和redis的密码是一样的 尝试用密码去爆出ftp ...

  2. verilog 编写猫狗过河实验

    源代码地址:https://github.com/penggeon/catanddog 效果演示见: https://www.bilibili.com/video/BV1n24y147S1 警告: 仅 ...

  3. Kali 修改root密码

    Kali 修改root密码 进入 Kali 系统,切换 root 用户 sudo su 输入当前用户密码 成功切换到 root 用户后,进行修改密码 passwd root

  4. Linux中如何将txt文件转为png格式

    Linux中如何将txt文件转为png格式 linux将txt文件转为png格式如果文本中没有中文,使用enscript,如果文本包含中文,使用paps命令.但是实际使用中,paps部分版本也不支持中 ...

  5. .NET适配HarmonyOS进展

    1. 前言 目前国产化系统浪潮下,适配鸿蒙是中国软件大势所趋,.NET作为最适合开发客户端语言之一,适配鸿蒙系统(HarmonyOS Next)是目前.NET开发者最关心的事情.我目前业余时间正在移植 ...

  6. redis的连接池和管道

    NoSQL泛指非关系型的数据库   非关系型数据库和关系型数据库的差别: 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高 可扩展性同样也 ...

  7. Word中接入大模型教程

    前言 为什么要在word中接入大模型呢? 个人觉得最大的意义就是不用来回切换与复制粘贴了吧. 今天分享一下昨天实践的在word中接入大模型的教程. 在word中接入大模型最简单的方式就是使用vba. ...

  8. ABB机械手维修37001电机开启接触器错误

    当ABB机器人报告37001电机开启接触器错误时,这往往意味着电机上电的接触器在执行动作时遇到了障碍.具体而言,该错误通常与位于控制柜内左下角的接触器相关,其中K42和K43负责控制电机的开启操作.深 ...

  9. autMan奥特曼机器人-出现argument list too long报错的解决方法

    当你运行一段时间autMan后,可能会出现argument list too long的报错,那是你主机系统限制了autMan运行插件的参数长度,导致的报错,如下: 查看当前ARG_MAX的值 在 L ...

  10. 【渗透测试】Vulnhub GROTESQUE 1.0.1

    渗透环境 攻击机:   IP: 192.168.10.18(Kali) 靶机:     IP:192.168.10.9 靶机下载地址:https://www.vulnhub.com/entry/gro ...