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. EndNote20在正文中修改引文格式的方法(只显示第一作者,其他部分显示et.al.)

    目前网上查找出来的绝大部分信息都是基于EndNote X9,所以这是自己摸索出来的方法 [这篇文章在CSDN上也发了一次,地址:https://blog.csdn.net/2301_79112268/ ...

  2. Svelte 最新中文文档翻译(1)—— 概述与入门指南

    前言 Svelte,一个非常"有趣".用起来"很爽"的前端框架.从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 ...

  3. LVGL图形库

    一.LVGL实现思想 LVGL以结构体的形式来实现类 父子对象的关系 1.子对象会随着父对象移动 2.子对象超出父对象范围的部分不显示 二.基础对象部件 基础对象lv_obj可以作为父对象来创建其它对 ...

  4. idea构建Build Project项目时一直卡在解析阶段解决办法

    可能是内存不足,修改以下三个地方 1.help->Edit Custom VM Options-Xmx4096m 2.file->settings->Build,Execution, ...

  5. 创建react脚手架(项目)

    现在安装 react 脚手架的有三种, react-boilerplate react-redux-starter-kit create-react-app(国内主要运用这一种) 1==>npm ...

  6. Centos 7 单用户模式修改密码/配置

    1.启动系统,启动项界面显示时,按"↑↓"键停留在此界面,按下"e"键进入编辑模式 2.利用"↑↓"键找到"linux16&quo ...

  7. DeepSeek+AnythingLLM打造自己大模型知识库

    DeepSeek+AnythingLLM打造自己大模型知识库 目       录 1.      安装Ollama 2.      下载DeepSeek模型 3.      安装AnythingLLM ...

  8. SqlServer中使用游标遍历数据集合

    具体代码如下所示: /***************************************** 实例:打印输出数据表BUS_Test中的Name和Age字段的值 ************** ...

  9. RFID基础——高频RFID协议、读写模块和标签

    RFID技术中的低频.高频.超高频有各自的优点和应用场景.其中,与我们个人生活息息相关的门禁卡.公交卡.身份证.图书标签主要用到的是高频RFID.这些应用也对应着高频RFID中不同的协议. 高频RFI ...

  10. 【忍者算法】从生活场景理解链表反转:最重要的基础算法|LeetCode第206题 反转链表

    从生活场景理解链表反转:最重要的基础算法 为什么这道题如此重要 反转链表看似简单,却是链表操作的基石.就像建房子要先打好地基,做复杂的链表操作前必须深刻理解反转原理.无数高频面试题都建立在这个基础之上 ...