简易版Http请求工具

一键搭建本地HTTP服务器的简易工具 在现代开发与测试环境中,快速搭建一个轻量级的 HTTP 文件服务器已成为许多开发者、运维人员以及测试人员的刚需。HTTP File Server(简称 HFS)正是一款满足这一需求的工具。它不仅轻量便携、易于部署,还提供了丰富的功能来支持文件共享、网页托管以及多协议访问等用途。本章将从 HFS 的起源与特点出发,逐步介绍其功能模块,并分析其在实际场景中的适用性。HTTP File Server(HFS)最初由意大利开发者 Rejetto 开发,其设计初衷是为了解决局域网内快速共享文件的需求。 阅读详情

简易版Http请求工具

这里的联网应用程序使用java.net包下的URL/HttpURLConnection类实现get/post请求

1、创建一个RUL对象

URL url = new URL(reqUrl);

2、获取URLConnection实例,与URL引用的远程对象的连接。

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

3、HttpURLConnection打开指向此引用的资源的通信链接

conn.connect();

4、从此打开的连接读取的输入流。

conn.getInputStream()

5、处理输入流
根据业务处理输入流

GET请求

关键代码

public static String doGet(URL url, String encoding) throws IOException {
    BufferedReader reader = null;
    HttpURLConnection conn = null;
    try {
        conn = (HttpURLConnection)url.openConnection();
        setConnectionParameter("GET", conn);
        setHeader(encoding, conn);
        conn.connect();
        reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));
        return getResult(reader);
    } catch (IOException e) {
        e.printStackTrace();
        throw new RuntimeException(e);
    } finally {
        if (reader != null){
            reader.close();
        }
        if (conn != null){
            conn.disconnect();
        }
    }
}

POST请求

关键代码

public static String doPost(URL url, Map<String, String> params, String encoding) throws IOException {
    DataOutputStream out = null;
    BufferedReader reader = null;
    HttpURLConnection conn = null;
    try {
        conn = (HttpURLConnection)url.openConnection();
        setConnectionParameter("POST", conn);
        setHeader(encoding, conn);
        conn.connect();
        if ((null != params) && (!params.isEmpty())) {
            out = new DataOutputStream(conn.getOutputStream());
            String stringParams = buildParams(params);
            out.write(stringParams.getBytes());
            out.flush();
        }
        reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));
        return getResult(reader);
    } catch (Exception e) {
        throw new RuntimeException(e);
    } finally {
        if (reader != null){
            reader.close();
        }
        if (out != null){
            out.close();
        }
        if (conn != null){
            conn.disconnect();
        }
    }
}

完整代码

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

public class HttpUtils {

    private static final String CHARSET = "UTF-8";

    public static String doGet(String reqUrl) throws IOException {
        return doGet(reqUrl, CHARSET);
    }

    public static String doGet(String reqUrl, String encoding) throws IOException {
        URL url = new URL(reqUrl);
        return doGet(url, encoding);
    }

    public static String doGet(URL url, String encoding) throws IOException {
        BufferedReader reader = null;
        HttpURLConnection conn = null;
        try {
            conn = (HttpURLConnection)url.openConnection();
            setConnectionParameter("GET", conn);
            setHeader(encoding, conn);
            conn.connect();
            reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));
            return getResult(reader);
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        } finally {
            if (reader != null){
                reader.close();
            }
            if (conn != null){
                conn.disconnect();
            }
        }
    }

    public static String doPost(String reqUrl, Map<String, String> params) throws IOException {
        return doPost(reqUrl, params, CHARSET);
    }

    public static String doPost(String reqUrl, Map<String, String> params, String encoding) throws IOException {
        URL url = new URL(reqUrl);
        return doPost(url, params, encoding);
    }

    public static String doPost(URL url, Map<String, String> params, String encoding) throws IOException {
        DataOutputStream out = null;
        BufferedReader reader = null;
        HttpURLConnection conn = null;
        try {
            conn = (HttpURLConnection)url.openConnection();
            setConnectionParameter("POST", conn);
            setHeader(encoding, conn);
            conn.connect();
            if ((null != params) && (!params.isEmpty())) {
                out = new DataOutputStream(conn.getOutputStream());
                String stringParams = buildParams(params);
                out.write(stringParams.getBytes());
                out.flush();
            }
            reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding));
            return getResult(reader);
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            if (reader != null){
                reader.close();
            }
            if (out != null){
                out.close();
            }
            if (conn != null){
                conn.disconnect();
            }
        }
    }

    /**
     * 设置连接参数
     * @param method
     * @param conn
     * @throws IOException
     */
    private static void setConnectionParameter(String method, HttpURLConnection conn) throws IOException {
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setInstanceFollowRedirects(true);
        conn.setConnectTimeout(1000*10);
        conn.setReadTimeout(1000*10);
        conn.setRequestMethod(method);
    }

    /**
     * 设置请求属性
     * @param encoding
     * @param conn
     */
    private static void setHeader(String encoding, HttpURLConnection conn) {
        conn.setRequestProperty("Connection", "Keep-Alive");
        conn.setRequestProperty("accept-language", "zh_CN");
        conn.setRequestProperty("Charset", encoding);
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        //伪装浏览器
        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36");
    }

    private static String getResult(BufferedReader reader) throws IOException {
        StringBuffer buff = new StringBuffer();
        String line = reader.readLine();
        while (line != null) {
//            buff.append("\n"+ line);
            buff.append(line);
            line = reader.readLine();
        }
        String result = buff.toString();
        return result;
    }

    private static String buildParams(Map<String, String> params) {
        if (null == params || params.isEmpty()){
            return "";
        }
        StringBuilder sb = new StringBuilder();
        int i = 0;
        for (Map.Entry entry : params.entrySet()) {
            if (i > 0){
                sb.append("&");
            }
            sb.append((String)entry.getKey());
            sb.append("=");
            sb.append((String)entry.getValue());
            i++;
        }
        return sb.toString();
    }

}
http自动发送请求工具(自动化测试http请求) 在现代软件开发过程中,HTTP 请求的自动化测试是确保应用程序稳定性和可靠性的关键环节。为了满足这一需求,我开发了一款功能强大且易于使用的自动化 HTTP 请求发送工具。该工具基于 C# 开发,集成了项目管理、接口管理、日志查看等功能,能够高效地模拟各种 HTTP 请求场景。以下将详细介绍该软件的功能特点和使用方法。 阅读详情

相关推荐

Verilog仿真必备:FSDB dump命令全解析与实战配置指南

本文深入解析了Verilog仿真中FSDB波形记录的核心命令与实战配置技巧。针对大规模SoC验证场景,详细介绍了如何通过$fsdbDumpvars、$fsdbDumpfile等命令实现信号精准捕获、文件体积控制和动态启停,并提供了智能化的分层dump策略,帮助工程师在保证调试信息完整性的同时,大幅提升验证效率并有效管理波形数据。

cnn8visionary的博客 348

简单好用http客户端工具--httpgo

简单好用的http请求客户端工具!

weixin_49021852的博客 741

【深度解析】AURIX TC387 UCB Flash架构与避坑指南(第一篇)

摘要:UCB(用户配置块)是AURIX TC3xx芯片启动与安全的关键配置区域,位于DFLASH0存储区。每个512字节的UCB包含启动模式、安全设置等关键参数,并通过强制CRC32校验确保完整性。UCB分为启动头(UCB_BMHD)、安全配置(UCB_ORIG)及其备份(UCB_COPY)三种主要类型。不同于常规Flash,UCB具有自动擦除特性,错误配置可能导致芯片永久锁死。开发中应谨慎修改UCB,必须同时编程原始和备份版本,并确保正确的CRC校验。后续文章将详细介绍UCB编程方法和调试技巧。

2511_94612429的博客 1233

简单http请求工具类

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace Company.Common.Utils { public static class HttpUtils { public static string Ge

mu_sang的博客 223

FPGA波束形成:从算法到硬件的艺术之旅

本文深入探讨了FPGA在波束形成技术中的应用,从算法原理到Verilog硬件实现的全过程。文章详细分析了FPGA并行处理、低延迟和可重构特性如何优化波束形成系统性能,并提供了Verilog关键模块代码示例和资源优化策略,为工程师实现高效FPGA波束形成解决方案提供实用指导。

tea88的博客 1044

从SVF文件到高效验证:Formality中set_svf命令的隐藏技巧与实战解析

本文深入解析Formality中set_svf命令的高级应用技巧,涵盖SVF文件生成策略、多文件加载优化及验证效率提升方法。通过-append和-ordered选项的实战应用,帮助工程师解决芯片验证中的常见问题,实现验证通过率与运行效率的双重提升。

mqtt6iot的博客 819

常用工具之http请求,支持restful风格常用请求

由于平时开发中习惯使用postman进行接口测试,在接触后端直接请求时,市面上未找到符合使用习惯的请求工具,故此在apache http请求工具的基础上做了一些封装,能够覆盖日常物联网开发中的大部分使用场景,支持多种身份认证、请求连接管理、多种响应接收等。

xx_shawn的博客 1109

基于STM32的智能火灾报警系统设计:多传感器融合与远程控制实现

本文详细介绍基于STM32单片机的智能火灾报警系统设计,采用多传感器融合技术(烟雾、温度、火焰检测)实现高精度火灾识别。系统集成远程控制与手机APP监控,通过加权决策算法降低误报率,提供多级响应策略,确保火灾预警的准确性与可靠性。

u5v6w7的博客 1102

JAVA http请求工具类

指定请求头自定义Cookie(cookie方法)指定是否keepAlive(keepAlive方法)指定表单内容(form方法)指定请求内容,比如rest请求指定JSON请求体(body方法)超时设置(timeout方法)指定代理(setProxy方法)指定SSL协议(setSSLProtocol)简单验证(basicAuth方法)很多时间受限于项目,开发环境,还是必须自己封装http,下边就这几贴代码了/**

拾一二的博客 3万+

Windows如何使用Anaconda 3进行keras环境的配置

** Windows如何使用Anaconda 3进行keras环境的配置 搭建Keras环境* Anaconda3如何安装keras,主要包括下面三步: 1.安装mingw libpython 2.安装theano 3.安装keras 若你还没有按装anaconda,赶紧下载安装吧! 下载途径有两个 (1)Anaconda版本为Anaconda 4.4.0,对应的python版本为3.6,附上An...

Lance_liangliang的博客 1601

Node-RED教程(一):Node-RED的介绍与安装

最新最全的Node-RED,node-red教程都在这里。 本篇介绍node-red的安装。使用docker 安装node-red

知无涯 3万+

最简单的方式使用原生 js 发送 http 请求

使用场景 检查接口可用性 主要用于在没有引入 jQuery 等工具的页面上需要验证一些 api 能否调得通的时候,可以快速调出浏览器调试界面发请求。 这在判断是否存在跨域问题的场景下,特别好用。 验证接口用于爬虫 另外,因为在浏览器调试界面发起的请求跟页面自身的 js 发起的请求是一样的,所以可以不用关心登录状态等上下文环境的问题。这在写爬虫的时候特别实用——抓到一个链接之后,直接在浏览器上进行验...

dadiyang的博客 1万+

DPI — 业务识别技术

目录 文章目录目录DPI 的业务识别技术类型特征识别Protocol 特征Payload 特征关联识别行为识别 DPI 的业务识别技术类型 DPI 的关键技术是能够高效的识别出网络上的各种应用类型。 浅报文检测是通过端口号来识别应用类型的。如:检测到端口号为 80 时,则认为是 HTTP 协议。但实际上,为了应用的安全性考虑通常不会使用默认端口来暴露业务能力。此时采用 L2 ~ L4 层的传统检测方法已无能为力了。 而 DPI 技术与我们熟知的防病毒软件在某些方面比较类似,即:其能识别的应用类型必须是系统已

烟云的计算 3516

Python HTTP 请求工具类 HttpUtils:简化 HTTP 请求的高效工具

这篇 优快云 博客聚焦 Python 的 HttpUtils 工具类。开篇点明在多领域开发中,高效 HTTP 请求处理至关重要,引出工具类。核心内容详述其功能:基础请求方法含 GET、POST 等,各附实例,如天气查询、电商操作;还有智能适配的 send_request 方法。示例实战涵盖数据、Web 后端场景,展示用法。结尾总结工具类提效、降复杂度优势,鼓励开发者运用并交流,助其畅游 HTTP 请求世界。

Fink-Go小码的博客 2095

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Http请求-hutool工具类的使用

工具类的使用

三横同学的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Http请求工具【添加请求头】

文章目录一、工具代码: 一、工具代码: package *.*; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import ...

YangzaiLeHeHe的博客 4015

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Http请求工具类

HttpUtil.java package com.jrbac.util; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.http.Consts; import

TinnnnnnY 6945

java的http请求工具对比

在Java开发中,发起HTTP请求是常见的任务。为了简化这一过程,开发者们使用了各种不同的HTTP客户端库。OkHttpFeign和,并对比它们的异同点,列出各自的优势和劣势,以及适用场景。

qq_34319145的博客 2452

Java工具类——Http请求工具类

package com.runan.utils; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.ne...

RobinsStruggle的博客 3299

java http请求工具类

1.下载maven包&lt;!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt; &lt;artifactId&gt;h...

qq_32403351的博客 3279

在Mac上,你可以使用Paw HTTP Client for Mac作为HTTP POST请求工具来发送HTTP请求

Paw是一款强大的HTTP客户端工具,它不仅支持常见的HTTP方法,如GET、POST、PUT和DELETE,还额外提供了其他高级选项,比如HEAD、PATCH和OPTIONS。在Paw(Mac版Postman的替代品)中,你可以创建并保存自定义的HTTP头模板来简化重复的请求配置。: 点击"Body"区域下方的"+",可以选择"JSON"或"Form Data"来添加POST的数据,比如键值对。: 点击顶部菜单栏的"+“图标,选择"新建”,然后选择"GET"、"POST"或其他你常使用的HTTP方法。

[Blog][Domain] programb.blog.youkuaiyun.com 1220

HTTP请求工具类(POST)

HTTP请求工具类 POST请求 package com.cuierdan.utils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; i.

崔二旦 1787

httpcat:简单实用的命令行 HTTP 请求构建工具

httpcat:简单实用的命令行 HTTP 请求构建工具 项目介绍 httpcat 是一个用于在命令行上构建原始 HTTP 请求的简便工具。在服务器问题调试、无效 HTTP 请求处理测试或了解 HTTP 内部工作原理等场景下,该工具显得尤为有用。与 httpie、curl 或 wget 等高级别 CLI HTTP 客户端相比,httpcat 提供了更直接的 HTTP 请求构建方法,避免了抽象层,使...

gitblog_00127的博客 879

【Java】HTTP请求工具类

在工作中可能存在要去调用其他项目的接口,这篇文章我们实现在Java代码中实现调用其他项目的接口。创建一个携带参数的POST请求,去请求其他项目的接口并返回数据。附加HTTP请求工具类,包含(GET、POST、无参GET、无参POST)

Syals的博客 6162
上一篇: MyCat加MySQL实现读写分离,故障转移
下一篇: JAVA池化技术
l_learning
博客等级 码龄8年 15粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值