Java实现模拟POST/GET请求

Java模拟发送post请求 项目要求:模拟100个温湿度设备发送温湿度数据进行压测,查看数据是否有叠加且显示正确,因为测试环境简陋,没有100个温湿度设备,只能通过调用接口模拟发送请求,由于每次发送的请求要求正文某些元素值要唯一,所以通过传参方式,每间隔一秒发送一次请求,发送满四条后间隔10分钟再次发送,写的是死循环,代码如下: import java.io.BufferedReader; import java.io.... 阅读详情

Java 目录:Java 目录_jav目录大全-优快云博客

import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class HttpRequestUtils {

    private static Logger logger = Logger.getLogger(HttpRequestUtils.class);

    private static final int connectTimeout = 1000 * 120;    // 连接超时时间
    private static final int socketTimeout = 1000 * 180;    // 读取数据超时时间

    /**
     * 向指定 URL 发送 POST请求
     *
     * @param strUrl        发送请求的 URL
     * @param requestParams 请求参数,格式 name1=value1&name2=value2
     * @return 远程资源的响应结果
     */
    public static String sendPost(String strUrl, String requestParams) {
        logger.info("sendPost strUrl:" + strUrl);
        logger.info("sendPost requestParams:" + requestParams);

        URL url = null;
        HttpURLConnection httpURLConnection = null;
        try {
            url = new URL(strUrl);
            httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setUseCaches(false);
            httpURLConnection.setRequestProperty("Accept", "application/json");    // 设置接收数据的格式
            httpURLConnection.setRequestProperty("Content-Type", "application/json");  // 设置发送数据的格式
            httpURLConnection.connect();    // 建立连接
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(
                    httpURLConnection.getOutputStream(), "UTF-8");
            outputStreamWriter.append(requestParams);
            outputStreamWriter.flush();
            outputStreamWriter.close();

            // 使用BufferedReader输入流来读取URL的响应
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
                    httpURLConnection.getInputStream(), "utf-8"));
            StringBuffer stringBuffer = new StringBuffer();
            String strLine = "";
            while ((strLine = bufferedReader.readLine()) != null) {
                stringBuffer.append(strLine);
            }
            bufferedReader.close();
            String responseParams = stringBuffer.toString();

            logger.info("sendPost responseParams:" + responseParams);

            return responseParams;
        } catch (IOException e) {
            logger.info("sendPost IOException:" + e.getMessage());
        } finally {
            if (httpURLConnection != null) {
                httpURLConnection.disconnect();
            }
        }

        return null;
    }

    /**
     * HttpClientPost 方式,向指定 URL 发送 POST请求
     *
     * @param strUrl        发送请求的 URL
     * @param requestParams 请求参数
     * @return 远程资源的响应结果
     */
    public static String doPost(String strUrl, List<BasicNameValuePair> requestParams) {
        logger.info("doPost strUrl:" + strUrl);
        logger.info("doPost requestParams:" + requestParams);

        String responseParams = "";
        StringBuffer stringBuffer = new StringBuffer();
        long startTime = 0, endTime = 0;

        CloseableHttpClient closeableHttpClient = HttpClients.createDefault();

        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(connectTimeout)
                .setSocketTimeout(socketTimeout)
                .build();    // 设置请求和传输超时时间

        HttpPost httpPost = new HttpPost(strUrl);
        httpPost.setConfig(requestConfig);
        HttpEntity httpEntity;

        try {
            if (requestParams != null) {
                // 设置相关参数
                httpEntity = new UrlEncodedFormEntity(requestParams, "UTF-8");
                httpPost.setEntity(httpEntity);

                logger.info("doPost requestParams:" + EntityUtils.toString(httpEntity));
            }
            startTime = System.nanoTime();
            CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(httpPost);
            int code = closeableHttpResponse.getStatusLine().getStatusCode();

            logger.info("doPost 状态码:" + code);

            if (code == 200 || code == 500) {
                try {
                    httpEntity = closeableHttpResponse.getEntity();
                    if (httpEntity != null) {
                        long length = httpEntity.getContentLength();
                        // 当返回值长度较小的时候,使用工具类读取
                        if (length != -1 && length < 2048) {
                            stringBuffer.append(EntityUtils.toString(httpEntity));
                        } else {    // 否则使用IO流来读取
                            BufferedReader bufferedReader = new BufferedReader(
                                    new InputStreamReader(httpEntity.getContent(), "UTF-8"));
                            String line;
                            while ((line = bufferedReader.readLine()) != null) {
                                stringBuffer.append(line);
                            }
                            bufferedReader.close();
                            responseParams = stringBuffer.toString();
                        }
                        endTime = System.nanoTime();
                    }
                } catch (Exception e) {
                    endTime = System.nanoTime();

                    logger.info("doPost Exception(通讯错误):" + e.getMessage());
                } finally {
                    closeableHttpResponse.close();
                }
            } else {
                endTime = System.nanoTime();
                httpPost.abort();

                logger.info("doPost 错误请求,状态码:" + code);
            }
        } catch (IOException e) {
            endTime = System.nanoTime();

            logger.info("doPost IOException:" + e.getMessage());
        } finally {
            try {
                closeableHttpClient.close();
            } catch (IOException e) {
            }
        }

        logger.info("doPost 用时(毫秒):" + (endTime - startTime) / 1000000L);
        logger.info("doPost responseParams:" + responseParams);

        return responseParams;
    }

    /**
     * 向指定 URL 发送 GET请求
     *
     * @param strUrl        发送请求的 URL
     * @param requestParams 请求参数
     * @return 远程资源的响应结果
     */
    public static String sendGet(String strUrl, String requestParams) {
        logger.info("sendGet strUrl:" + strUrl);
        logger.info("sendGet requestParams:" + requestParams);

        String responseParams = "";
        BufferedReader bufferedReader = null;
        try {
            String strRequestUrl = strUrl + "?" + requestParams;
            URL url = new URL(strRequestUrl);
            URLConnection urlConnection = url.openConnection();    // 打开与 URL 之间的连接

            // 设置通用的请求属性
            urlConnection.setRequestProperty("accept", "*/*");
            urlConnection.setRequestProperty("connection", "Keep-Alive");
            urlConnection.setRequestProperty("user-agent",
                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

            urlConnection.connect();    // 建立连接

            Map<String, List<String>> map = urlConnection.getHeaderFields();    // 获取所有响应头字段

            // 使用BufferedReader输入流来读取URL的响应
            bufferedReader = new BufferedReader(new InputStreamReader(
                    urlConnection.getInputStream()));
            String strLine;
            while ((strLine = bufferedReader.readLine()) != null) {
                responseParams += strLine;
            }
        } catch (Exception e) {
            logger.info("sendGet Exception:" + e.getMessage());
        } finally {
            try {
                if (bufferedReader != null) {
                    bufferedReader.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }

        logger.info("sendPost responseParams:" + responseParams);

        return responseParams;
    }
}

Java 模拟 POST 提交数据 编程 在上述代码中,我们首先创建了一个 URL 对象,该对象表示我们要发送 POST 请求的目标 URL。然后,我们使用该 URL 对象创建了一个 HttpURLConnection 对象,并设置请求的方法为 POST,并设置 Content-Type 为 application/x-www-form-urlencoded。然后,我们获取服务器的响应,首先获取响应状态码,然后读取响应内容。接下来,我们可以编写一个方法,该方法将接收目标 URL 和要提交的数据作为参数,并返回服务器的响应结果。 阅读详情

相关推荐

【Java基础知识 46】GET和POST的区别,java模拟postman发post请求

众所周知,SpringMVC分了很多请求方式,```get post put delete```,它们有什么区别呢?Java怎么模拟POST请求呢?今天就来说道说道。

学Java,找哪吒 5144

Java代码模拟一个Post请求

Java代码模拟一个Post请求 ​ 我们常用的http请求无非GET和POST。在springboot项目中,我们如果想要简单测试一段代码无非就是项目跑起来,然后在浏览器中通过输入url,看浏览器中(按F12)控制台是否响应成功,看IDEA控制台的打印内容以及日志。 ​ 但是在浏览器中输入url,GET请求很好模拟,无非是本机ip+服务端口+springboot项目中在controller层配置的@RequestMapping("/访问路径")。而POST请求就不是那么好模拟的了,因为POST请求一般包含

weixin_45866849的博客 6311

(完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

(完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

java代码模拟postman请求头发送POST

java模拟postman请求头

天弃的博客 1312

Qt 插件开发 plugin 超详细 有源码

Qt 插件化开发框架类似于前后端的微服务的场景,授权哪个微服务则前端可以使用哪个微服务,插件就行硬件插卡一样,可以被随时删除、插入和修改,所以结构很灵活,容易修改,方便软件的升级和维护;插件主要面向接口编程,无需访问.lib文件,热插拔、利于团队开发。即使在程序运行时.dll不存在,也可以正常启动,只是相应插件功能无法正常使用而已;动态库需要访问.lib文件,而且在程序运行时必须保证.lib存在,否则无法正常启动;

q610098308的专栏 6546

全本地AI代理实战:零数据外泄的本地化Agent工作流搭建

全本地AI代理是一种将大语言模型推理、长期记忆与工具调用完全运行于用户本地设备的智能体架构,其核心原理在于通过进程隔离与标准化协议实现模型层、记忆层和工具层的解耦协同。相比依赖云端API的传统方案,它在数据主权、响应确定性与环境复现性上具备不可替代的技术价值。典型应用场景包括法务合规文档处理、离线工业现场辅助决策、以及高敏感度企业知识管理。本文聚焦Qwen2+Ollama+SurrealDB+Agno技术栈,详解如何构建可落地的全本地AI代理系统,覆盖从硬件适配、向量记忆建模到多模态插件协同的完整链路。

weixin_34194964的博客 650

java api 测试工具_Java 实现在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具

本站工具,在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具后台所有实现代码。支持的请求协议有:Post、GetDelete、Put、Trace、Head、Options。特色是加了请求头的输入,方便一些跨域,和保持同一个session。工具截图:下面上Java代码:/*** 模拟各种Http请求* @param bo* @return*/public static Map re...

weixin_39883079的博客 845

鼎捷T100——二次开发:维护作业添加非实体字段

非实体字段添加

weixin_52342654的博客 1159

JAVA 动态替换代理IP并模拟POST请求第二弹<转自ITeye>

原文地址:http://www.cnblogs.com/enshrineZither/p/3462220.html 本文涉及3个基本点: 1、因为很多公司的内网都设有代理,浏览器通过ip与port上网,而java代码模拟http get方式同样需要外网代理; 2、Java实现http的Get/Post请求代码; 3、主要是设置HttpURLConnection请求头里面的属

其疾如风,其徐如林,侵掠如火,不动如山 7528

华大HC32F460 TCP Client 实验

华大HC32F460 TCP Client 实验

ZhuoWuKeJi的博客 649

滤波算法实现大全——基于匀速直线运动模型的kalman滤波算法

滤波算法实现大全——基于匀速直线运动模型的kalman滤波算法

jane0819的博客 522

Java后台模拟生成GET/POST请求servlet(转载)

Servlet是SUN指定的Java服务器端编程规范,用以处理来自客户端的请求,处理并做出响应的一套基础API。Servlet是运行在Servlet容器中的Java小程序,容器运行在服务器端,服务器侦听特定端口的请求,并解析请求地址,将请求对象送给容器中的Servlet来执行,这个原理非常简单,平时我们多以在浏览器中输入URL地址,提交表单方式来实现,现在我们用Java语言来模拟常用的GET和...

正走向大牛的菜鸟 809

YOLO26优化:注意力魔改 | 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测,暴力涨点

用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 488

在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具

最近发现一个超好用的“在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具”。 链接在此奉上:在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具 很好的一点就是我们只要QQ登录后,就可以记住请求地址,包括请求参数,包括请求cookie,header信息,都保存了,这个功能大赞。 还有实现源码都开放了:Java 实现在线

Coding 改变世界 2万+

如何在 R 中使用 Gamma 分布(附示例)

在统计学中,伽马分布通常用于模拟与等待时间相关的概率。我们可以使用以下函数来处理 R 中的 gamma 分布:dgamma(x, shape, rate) – 找到具有特定形状和速率参数的 gamma 分布的密度函数值。 pgamma(q, shape, rate) – 找到具有特定形状和速率参数的伽马分布的累积密度函数值。 qgamma(p, shape, rate) – 找到具有特定形状和速率参数的 gamma 分布的逆累积密度函数值。 rgamma(n, shape, rate) – 生成 n 个随机

Mrrunsen的博客 4415

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的农作物害虫检测系统(深度学习模型+UI界面+训练数据集)

随着人工智能技术在农业领域的深入应用,基于深度学习的害虫检测系统已成为智慧农业的重要组成部分。本文详细介绍了一种基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的农作物害虫检测系统,涵盖算法原理、数据集构建、模型训练、系统实现及完整代码。该系统能够实时检测并识别多种农作物害虫,为农业生产提供精准的病虫害监测解决方案。

YOLO 273

java模拟http请求(代理ip)

java实现动态切换上网IP (ADSL拨号上网) java动态设置IP java模拟http的Get/Post请求 自动生成IP模拟POST访问后端程序 JAVA动态替换代理IP并模拟POST 转载于:https://www.cnblogs.com/straybirds/p/9213208.html...

weixin_30886233的博客 829

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java爬虫之使用HttpClient模拟浏览器发送请求方法详解

java爬虫之使用HttpClient模拟浏览器发送请求方法详解 https://www.jb51.net/article/191791.htm

JIQUAN233的博客 311

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

用JAVA模拟请求,进行抓取服务器数据

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import

474

[Python爬虫] 模拟浏览器、代理ip、开启日志、超时处理、异常处理、登录、下载图片

一、前言 之前以 Java 为主要的开发语言,后台、爬虫 都是使用 Java 语言 近来,开发时逐步使用 Python 取代 Java,换种口味~ 本文根据之前 Java 爬虫涉及到方法为导向,以 Python 来实现, 包括 模拟浏览器、代理ip、开启日志、超时处理、异常处理、Get/Post请求 等 1、Java 爬虫常规操作: [Java爬虫] 使用 Jsoup+Ht...

IT小村 1834

java socket模拟http请求

package httpclientlearn; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; i

mezheng的专栏 1234

Java网络技术整理

1.Get方式这种方式是最简单的参数传递方式。例如:http://www.zlex.org/get.do?a=3&amp;b=5&amp;c=7这个url中,a、b和c是url参数,具体的说是参数名,与之用“=”隔开的是对应的参数值。也就是说参数a的值为3、参数b的值为5、参数c的值为7。get.do是请求地址,紧跟这个地址的参数a需要用“?”作为分隔符,其余参数用“&amp;”做分隔符。这种ge...

iteye_14356的博客 202

JAVA实现HTTPserver端

用java socket实现了一个简单的httpserver, 能够处理GET, POST,以及带一个附件的multipart类型的POST。尽管中途遇到了非常多问题, 只是通过在论坛和几个高手交流了一下,问题都攻克了。假设你认为程序有些地方看不明确,能够參看这个帖子:http://topic.youkuaiyun.com/u/20090625/22/59a5bfc8-a6b6-445d-9829-ea6...

weixin_30347335的博客 60

JAVA模拟HTTP请求中GET/POST方式

package com.nxt.datacenter.utils; /** * 文件描述 * * @author: maomi * @date: 2019/5/31 */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.i...

qq_25635139的博客 1541

Java Mock模拟Get和POST请求

1:Mock简介 1.1:Mock可以做什么 Mock可以模拟一个http接口的后台响应,就这么简单,可以模拟request、response 1.2:如何获取Mock 下载Moco Runner standlone: 下载地址 idea里操作 命令行运行 2:Mock模拟一个Get请求 2.1:Mock模拟一个不带参数的Get请求 2.1.1:创建json文件 Test.json [ {...

qq_42610167的博客 2263

Loadrunner 11 测试API java Vuser 模拟Post,Get 请求实例

Loadrunner 11 测试API的性能,java vuser 模拟Post,Get 请求 本例模拟测试 2个API(1.用户登录,2. 一个获得频道列表), Action部分代码如下(注意是java vuser脚本): import lrapi.lr; import lrapi.web; public class Actions { String htmlBody;

Cheers Li 软件测试博客 9079
上一篇: Ionic程序分离不同controller
下一篇: Java反射小例
程序员null
博客等级 码龄11年 1304粉丝 124原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值