java实现HttpClient请求

HttpClient常用操作及封装工具类 HttpClient 是一个用于发送 HTTP 请求和接收 HTTP 响应的类库/模块,可以用于编写客户端应用程序,通过 HTTP 与服务器进行通信。 HttpClient 提供了一组方法和类,使得发送 HTTP 请求变得简单和方便。它支持各种 HTTP 方法,例如 GET、POST、PUT、DELETE 等,并可以设置请求的头部信息、请求参数、请求体等。 阅读详情
  1. pom.xml中添加Commons-httpclient包
<!--HttpClient-->
<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>
<!--fastjson-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.32</version>
</dependency>
  1. Http请求工具类
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.params.HttpMethodParams;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * Http请求工具类
 * @author kxz
 * @date 2022/7/13
 */
public class HttpClientUtil {
    /**
     * httpClient的get请求方式
     * 使用GetMethod来访问一个URL对应的网页实现步骤:
     * 1.生成一个HttpClient对象并设置相应的参数;
     * 2.生成一个GetMethod对象并设置响应的参数;
     * 3.用HttpClient生成的对象来执行GetMethod生成的Get方法;
     * 4.处理响应状态码;
     * 5.若响应正常,处理HTTP响应内容;
     * 6.释放连接。
     * @param url
     * @param charset
     * @return
     */
    public static String doGet(String url, String charset) {
        //1.生成HttpClient对象并设置参数
        HttpClient httpClient = new HttpClient();
        //设置Http连接超时为5秒
        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
        //2.生成GetMethod对象并设置参数
        GetMethod getMethod = new GetMethod(url);
        //设置get请求超时为5秒
        getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
        //设置请求重试处理,用的是默认的重试处理:请求三次
        getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
        String response = "";
        //3.执行HTTP GET 请求
        try {
            int statusCode = httpClient.executeMethod(getMethod);
            //4.判断访问的状态码
            if (statusCode != HttpStatus.SC_OK) {
                System.err.println("请求出错:" + getMethod.getStatusLine());
            }

            //5.处理HTTP响应内容
            //HTTP响应头部信息,这里简单打印
            //  Header[] headers = getMethod.getResponseHeaders();
            //  for(Header h : headers) {
            //      System.out.println(h.getName() + "---------------" + h.getValue());
            //  }

            //读取HTTP响应内容,这里简单打印网页内容
            //读取为字节数组
            byte[] responseBody = getMethod.getResponseBody();
            response = new String(responseBody, charset);
//            System.out.println("-----------response:" + response);
            //读取为InputStream,在网页内容数据量大时候推荐使用
            //InputStream response = getMethod.getResponseBodyAsStream();
        } catch (HttpException e) {
            //发生致命的异常,可能是协议不对或者返回的内容有问题
            System.out.println("请检查输入的URL!");
            e.printStackTrace();
        } catch (IOException e) {
            //发生网络异常
            System.out.println("发生网络异常!");
        } finally {
            //6.释放连接
            getMethod.releaseConnection();
        }
        return response;
    }

    /**
     * post请求
     * @param url
     * @param jsonObject
     * @return
     */
    public static String doPost(String url, JSONObject jsonObject){
        HttpClient httpClient = new HttpClient();
        PostMethod postMethod = new PostMethod(url);

        postMethod.addRequestHeader("accept", "*/*");
        postMethod.addRequestHeader("connection", "Keep-Alive");
        //设置json格式传送
        postMethod.addRequestHeader("Content-Type", "application/json;charset=utf-8");
        //必须设置下面这个Header
        postMethod.addRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");
        //添加请求参数-方式一
        //此处是以json对象格式作为参数请求,同postman中Body=》raw=》JSON格式。
        //例如:{"webankAppId":"TIDAXT3h","orderNo":"orderNo371521199209186112_1", "name":"孔祥宗", "idNo":"371521199209186112", "userId":"userID371521199209186112_1", "version":"1.0.0", "sign":"98B985A1314D720AD16BFE53B1A5005C66E3D8E1"}
        postMethod.setRequestEntity(new StringRequestEntity(jsonObject.toString()));
        //添加请求参数-方式二、三略


        String res = "";
        try {
            int code = httpClient.executeMethod(postMethod);
            if (code == 200){
                res = postMethod.getResponseBodyAsString();
                System.out.println(res);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return res;
    }

    public static void main(String[] args) {
        Map<String, String> params = new HashMap<>();
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("webankAppId", FaceConfig.APP_ID);
        jsonObject.put("name", "name");
        jsonObject.put("orderNo", "orderNo");
        jsonObject.put("idNo", "idCard");
        jsonObject.put("userId", "userId");
        jsonObject.put("version", "name");
        jsonObject.put("sign", "sign");
        String h5faceidResult = HttpClientUtil.doPost("https://miniprogram-kyc.tencentcloudapi.com/api/server/h5/geth5faceid", jsonObject);
        System.out.println(h5faceidResult);
    }
}
【排障手记】WebFlux踩坑记——排查一次WebClient使用中的OOM(java.lang.OutOfMemoryError: Java heap space)异常的血泪史 笔者在使用WebFlux框架的WebClient实现进行高并发代理请求时,遭遇了OOM异常。经历数天时间不断尝试,终于解决问题。 阅读详情

相关推荐

Java使用HttpClient5实现发送HTTP请求

HttpClient5 是 Apache HttpComponents 项目中的一个重要组件,它是一个功能齐全且高度可定制的 HTTP 客户端库,专门用于发送 HTTP 请求、处理 HTTP 响应并支持各种 HTTP 协议特性。内置的连接池机制能提高并发处理性能,减少资源消耗。内置 Cookie 管理功能,能够自动处理服务端返回的 Cookie 并在后续请求中使用,模拟浏览器行为。HttpClient5 的设计高度模块化,用户可以根据需要对连接管理、重定向策略、请求重试策略、代理设置等进行灵活定制。

pan_junbiao的博客 2042

HttpClient使用详解

Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因...

cihongmo6452的博客 1090

java 通过Httpclient模拟https Post 请求,实现双向认证

package com.sumy.https;import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.SocketTimeoutException; import java.security.KeyManagementException; import java.

vincentwistron的专栏 1万+

Java中常见的几种HttpClient调用方式

*** 带参数的get请求// 创建Httpclient对象 CloseableHttpClient httpclient = HttpClients . createDefault();try {// 创建uri URIBuilder builder = new URIBuilder(url);if(param!= null) {// 创建http GET请求 HttpGet httpGet = new HttpGet(uri);

qq_49641620的博客 5350

通过HttpClient实现高效Java网络请求

在当今的互联网应用开发中,Apache HttpClient是一个广泛使用的Java库,它允许开发者执行HTTP客户端操作,比如发送请求和处理响应。本章节将概述HttpClient在Java生态系统中的重要性,以及它如何帮助开发者有效地处理HTTP请求。Apache HttpClient的架构是建立在一系列组件之上的,这些组件协同工作以执行HTTP请求和处理HTTP响应。以下是HttpClient的主要组件:HttpClient- 这是发起请求和接收响应的主接口。- 负责执行请求并处理响应。

weixin_36483050的博客 839

Java HTTP GET请求示例工程:使用Apache HttpClient在IDEA与Maven环境中实现

本文还有配套的精品资源,点击获取 简介:该工程展示了如何在Java中通过Apache HttpClient库发送HTTP GET请求,并演示了如何处理HTTP请求的Header和Cookie信息。示例工程是在IntelliJ IDEA开发环境中使用Maven构建的,提供了对HTTP协议细节的深入理解,包括连接管理、重试策略以及HTTP/1.1和HTTP/2的处理。工程内含简...

weixin_42592399的博客 2452

httpClient(JAVA)

文章目录1.介绍1.1 主要功能1.2 步骤2.使用2.1 get访问(不带参数)2.2 get访问(带参数)2.3 post访问(不带参数)2.4 post访问(带参数)2.5 连接池2.6 请求参数配置参考 1.介绍 1.1 主要功能 1.实现了所有HTTP的方法(get、post、put、head等) 2.支持自动转向 3.支持代理服务器 4.自动处理set-cookie中的cookie 5...

有点想法的专栏 7346

使用httpclient实现Java跨域HTTP请求与JSON处理

跨域请求是Web开发中经常遇到的问题,主要是由于浏览器的同源策略导致的。同源策略规定,只有当两个URL的协议、域名和端口完全相同时,它们才是同源的,才能互相访问资源。当尝试从不同的源(域名、协议或端口)发起HTTP请求时,就会遇到跨域问题。例如,将JavaScript放在一个域中尝试访问另一个域中的资源,如API接口,由于安全性限制,浏览器默认不允许这样的操作。HTTP客户端库被广泛用于发起HTTP请求以及处理HTTP响应。

weixin_42591413的博客 1272

JAVA实现HTTP请求 之 HTTPClient

一、目前JAVA实现HTTP请求的方法用的最多的有两种:通过HTTPClient这种第三方开源框架去实现。HTTPClient对HTTP的封装性比较不错,基本上能够满足我们大部分的需求,最新的HttpClient4.5是org.apache.http.impl.client下操作远程 url的工具包;HttpClient3.1 是 org.apache.commons.httpclient下操作远程 url的工具包,虽然已不再更新,但实现工作中使用httpClient3.1的代码还是有不少的.另一种则是通过

WYP123456L的博客 1万+

用AI助手Cursor轻松自动生成流程图

通过 Cursor + Mermaid,我们可以快速、准确地自动生成流程图,上面演示的例子部分流程图可能比较丑,我们可以通过流程图软件导入Mermaid代码,然后手动进行微调就可以了,如果你对美观要求不是特别多,可以直接用,这将极大地提升代码可视化和架构设计的效率。

呱牛 Just do IT 1936

anaconda安装-超详细版

文章目录一、anaconda安装1.1 anaconda安装地址1.2 安装详细步骤检验安装是否成功更改conda源(后续安装第三方库可以加快速度) 一、anaconda安装 Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。装anaconda,就不需要单独装python了。 anaconda优点: 1、anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而p

in546的博客 25万+

如何在java中用httpclient实现rpc get请求

如果你想用 Java 的 HttpClient 实现 RPC 的 GET 请求,过程会稍微不同,因为 GET 请求通常通过 URL 参数(查询字符串)传递数据,而不是像 POST 那样通过请求体。以下是详细的讲解和示例代码。

qq_63553317的博客 1275

手把手教你用内核远程call实现64位进程注入(附完整ShellCode示例)

本文深入探讨了在Windows 64位环境下,通过内核态直接操作线程TrapFrame结构实现进程注入的高级技术。文章提供了从驱动框架设计、用户态-内核态通信,到定位修改TrapFrame、编写Shellcode及执行环境恢复的完整实战指南,并附有详细的代码示例,为安全研究人员和开发者提供了绕过用户态检测、实现底层远程代码执行的新思路。

weixin_28396629的博客 341

http异步请求 java_java实现HttpClient异步请求资源的方法

本文实例讲述了java实现HttpClient异步请求资源的方法。分享给大家供大家参考。具体实现方法如下:package demo;import java.util.concurrent.CountDownLatch;import org.apache.http.HttpResponse;import org.apache.http.client.methods.HttpGet;import or...

weixin_39599342的博客 476

【gateway nc adapter虚拟网卡 win11 联想】问题的解决

由于需要登录公司内网,于是启用奇安信VPN。但启动后报出网关未连接的问题,于是我检查了我的网络适配器,并尝试解决,以下给出几种我实践过程中的行动,并附带最后成功的解决方法。

m0_73602417的博客 6536

C# 调用高德地图关键词 API

今天我们要一起探索如何使用 C# 来调用高德地图的关键词搜索 API,从而实现精准的地理位置搜索功能。高德地图的关键词搜索 API 可以帮助我们轻松地实现这一点,它能够返回一系列匹配关键词的地点坐标和其他相关信息。通过简单的几行 C# 代码,我们就实现了调用高德地图关键词搜索 API 的功能。接下来,我们将在一个 C# 控制台应用中实现调用高德地图关键词搜索 API 的功能。此外,如果要在生产环境中使用,还需要考虑安全性问题,例如不要在客户端暴露 API 密钥。🔥关注墨瑾轩,带你探索编程的奥秘!

java专栏 1102

如何在java中用httpclient实现rpc post 请求

HttpClient:Apache 提供的一个强大工具,用于发送 HTTP 请求(如 GET、POST 等)。:远程过程调用,是一种通过网络调用远程服务的方法。使用 HTTP POST 请求实现 RPC 通常是将请求参数(比如 JSON 数据)发送到远程服务器,服务器处理后返回结果。

qq_63553317的博客 1133

YOLOv8 WIOU

本文介绍了如何在YOLOv8中实现WIOU(Weighted Intersection over Union)的修改方法。主要修改了ultralytics/utils/metrics.py文件中的bbox_iou函数,新增了WIoU_Scale类,支持单调性FM v2、非单调性FM v3两种模式,并提供了动态调整的动量参数。修改后的函数支持多种IoU变体(GIoU、DIoU、CIoU等),通过数学公式实现了更精确的边界框回归损失计算,特别针对小目标检测场景进行了优化。该实现使用了PyTorch框架,包含完整

FJN110的博客 2039

Java通过HttpClient实现请求接口发送文件

Java通过HttpClient实现请求接口发送文件

一恍过去 2万+

VS2019项目使用CGAL6.1配置教程详细步骤

在VS2019项目中使用CGAL详细步骤

插件开发 331

RK3568笔记十七:LVGL v8.2移植

若该文为原创文章,转载请注明原文出处。本文介绍嵌入式图形库移植到Linux开发板ATK-RK3568上的步骤。

4229

java实现httpclient发送post请求

需求:现在要在java后端接口中直接请求客户提供的其他接口来获取所需要的数据,那么就需要用到httpclient来做,下面做一个实现以记录... 第一步:导入所需要的jar包并写一个工具类 1.post请求工具类 因为我们需要的协议是https协议,所以我做了一个httpsPostUtil package com.qs.util; impo

qq_24138151的博客 3896

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java httpclient 异步请求_java_java实现HttpClient异步请求资源的方法,本文实例讲述了java实现HttpClien - phpStudy...

java实现HttpClient异步请求资源的方法本文实例讲述了java实现HttpClient异步请求资源的方法。分享给大家供大家参考。具体实现方法如下:package demo;import java.util.concurrent.CountDownLatch;import org.apache.http.HttpResponse;import org.apache.http.client....

weixin_39599372的博客 242

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java HTTP 请求的四种实现方式:Apache HttpClient、OkHttp、WebClient 与 Java 11 HttpClient

在现代Java开发中,`HttpClient`和`PostMethod`是较旧的ApacheHttpClient3.x的API。推荐使用更现代的技术来替代这些代码,例如Java11+内置的`HttpClient`或第三方库如OkHttp或SpringWebClient。

u012372850的专栏 1507

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

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

使用httpclient实现后台java发送post和get请求

原文:https://blog.youkuaiyun.com/mhqyr422/article/details/79787518

qq_42455280的博客 782

Java实现发送post请求,RestTemplate发送post请求,Httpclient发送post请求

Java实现发送post请求,RestTemplate发送post请求,Httpclient发送post请求

zhao001101的博客 6658
上一篇: 开发工具:IDEA和VSCode配置
下一篇: java实现腾讯云人脸核身pc端和移动端(浏览器)H5接入
just_you_java
博客等级 码龄12年 1689粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值