自定义HttpClient工具类

自定义HttpClient工具类

简介

  • 依赖
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.6</version>
    </dependency>
    

api

  • 发送get请求: doGet(String url);
  • 发送post请求,传参数json: *doPostJson(String url, String jsonParam);*

源码

  • import java.util.HashMap;
    import java.util.Map;import org.apache.http.HttpEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.ContentType;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.protocol.HTTP;
    import org.apache.http.util.EntityUtils;import com.alibaba.fastjson.JSON;/* 依赖
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.6</version>
    </dependency>
    */
    public class HttpClientUtils {public static void main(String[] args) {doGet("http://127.0.0.1/test1");Map<String, Object> data = new HashMap<String, Object>();data.put("code", "002");data.put("name", "测试");doPostJson("http://127.0.0.1/test2", Object2String(data));}public static void doPostJson(String url, String jsonParam){try {CloseableHttpClient client = null;CloseableHttpResponse response = null;try {HttpPost httpPost = new HttpPost(url);httpPost.setHeader(HTTP.CONTENT_TYPE, "application/json");httpPost.setEntity(new StringEntity(jsonParam, ContentType.create("text/json", "UTF-8")));client = HttpClients.createDefault();response = client.execute(httpPost);int code = response.getStatusLine().getStatusCode();HttpEntity entity = response.getEntity();String result = EntityUtils.toString(entity);System.err.println(code);System.err.println(result);} finally {if (response != null) {response.close();}if (client != null) {client.close();}}} catch (Exception e) {e.printStackTrace();}}public static void doGet(String url){try {CloseableHttpClient client = null;CloseableHttpResponse response = null;try {HttpGet httpGet = new HttpGet(url);client = HttpClients.createDefault();response = client.execute(httpGet);HttpEntity entity = response.getEntity();String result = EntityUtils.toString(entity);int code = response.getStatusLine().getStatusCode();System.err.println(result);System.err.println(code);} finally {if (response != null) {response.close();}if (client != null) {client.close();}}} catch (Exception e) {e.printStackTrace();}}/** 将输入参数  转换为json字符串 */public static String Object2String(Object obj){
    //		try {
    //			return new ObjectMapper().writeValueAsString(obj);
    //		} catch (JsonProcessingException e) {
    //			e.printStackTrace();
    //		}return JSON.toJSONString(obj);}//TODO 待解决: 服务端接收后有中文款乱码问题
    //	public static void doPostForm(String url, String formParam){
    //        try {
    //            CloseableHttpClient client = null;
    //            CloseableHttpResponse response = null;
    //            try {
    //                // 创建一个提交数据的容器
    //                List<BasicNameValuePair> parames = new ArrayList<>();
    //                parames.add(new BasicNameValuePair("userId", "001"));
    //                parames.add(new BasicNameValuePair("userName", "测试"));
    //                
    //                HttpPost httpPost = new HttpPost(url);
    //                httpPost.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded;charset=UTF-8");
    //                httpPost.setEntity(new UrlEncodedFormEntity(parames, "UTF-8"));
    //                client = HttpClients.createDefault();
    //                response = client.execute(httpPost);
    //                HttpEntity entity = response.getEntity();
    //                String result = EntityUtils.toString(entity);
    //                System.err.println(result);
    //            } finally {
    //                if (response != null) {
    //                    response.close();
    //                }
    //                if (client != null) {
    //                    client.close();
    //                }
    //            }
    //        } catch (Exception e) {
    //            e.printStackTrace();
    //        }
    //	}
    }
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/48378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LinkedList

LinkedList的模拟实现&#xff08;底层是一个双向链表&#xff09;LinkedList使用 LinkedList的模拟实现&#xff08;底层是一个双向链表&#xff09; 无头双向链表&#xff1a;有两个指针&#xff1b;一个指向前一个节点的地址&#xff1b;一个指向后一个节点的地址。 节点定…

vim 配置环境变量与 JDK 编译器异常

vim 配置环境变量 使用 vim 打开系统中的配置信息&#xff08;不存在将会创建&#xff09;&#xff1a; vim ~/.bash_profile 以配置两个版本 JDK 为例&#xff08;前提是已安装 JDK&#xff09;,使用上述命令打开配置信息&#xff1a; 输入法调成英文&#xff0c;输入 i&…

Mysql Oracle 区别

1. oracle select *, id需要在星号前加别名&#xff0c;mysql则不需要 mysql语法&#xff1a; select *, id from xin_student_t;oracle语法&#xff1a; select st.*, st.id from xin_student_t st;2. oracle表定义了别名&#xff0c;在查询时可以不用别名指定字段&#xf…

OWASP Top 10(2021)漏洞学习(最新)

A01:2021-权限控制失效 从第五位上升到第一位&#xff0c;94%的应用程序都接受了某种形式的针对“失效的访问控制”的测试&#xff0c;该事件的 平均发生率为 3.81%&#xff0c;该漏洞在提供的数据集中出现漏洞的应用数量最多&#xff0c;总发生漏洞应用数量超过31.8万多 次。 …

Python爬取斗罗大陆全集

打开网址http://www.luoxu.cc/dmplay/C888H-1-265.html F12打开Fetch/XHR&#xff0c;看到m3u8&#xff0c;ts&#xff0c;一眼顶真&#xff0c;打开index.m3u8 由第一个包含第二个index.m3u8的地址&#xff0c;ctrlf在源代码中一查index&#xff0c;果然有&#xff0c;不过/…

解决:(error) ERR unknown command shutdow,with args beginning with

目录 一、遇到问题 二、出现问题的原因 三、解决办法 一、遇到问题 要解决连接redis闪退的问题&#xff0c;按照许多的方式去进行都没有成功&#xff0c;在尝试使用了以下的命名去尝试时候&#xff0c;发现了这个问题。 二、出现问题的原因 这是一个粗心大意导致的错误&am…

【unity小技巧】Unity2D TileMap+柏林噪声生成随机地图(附源码)

文章目录 前言柏林噪声素材导入Rule Tile配置生成随机地图问题扩展问题添加植被源码参考完结 前言 我的上一篇文章介绍了TileMap的使用&#xff0c;主要是为我这篇做一个铺垫&#xff0c;看过上一篇文章的人&#xff0c;应该已经很好的理解TileMap的使用了&#xff0c;这里我就…

C++,从“hello world“开始

一、"hello world" #inclue <iostream>using namespace std;int main() {cout << "hello world" << endl;return 0; } 1.1 #include&#xff1a;预处理标识 1.2 <iostream>&#xff1a;输入输出流类所在头文件 1.2.1 istream&a…

【学习日记】【FreeRTOS】延时列表的实现

前言 本文在前面文章的基础上实现了延时列表&#xff0c;取消了 TCB 中的延时参数。 本文是对野火 RTOS 教程的笔记&#xff0c;融入了笔者的理解&#xff0c;代码大部分来自野火。 一、如何更高效地查找延时到期的任务 1. 朴素方式 在本文之前&#xff0c;我们使用了一种朴…

Nginx 使用 HTTPS(准备证书和私钥)

文章目录 Nginx生成自签名证书和配置Nginx HTTPS&#xff08;准备证书和私钥&#xff09;准备证书和私钥 Nginx生成自签名证书和配置Nginx HTTPS&#xff08;准备证书和私钥&#xff09; 准备证书和私钥 生成私钥 openssl genrsa -des3 -out server.key 2048这会生成一个加密…

Python 程序设计入门(025)—— 使用 os 模块操作文件与目录

Python 程序设计入门&#xff08;025&#xff09;—— 使用 os 模块操作文件与目录 目录 Python 程序设计入门&#xff08;025&#xff09;—— 使用 os 模块操作文件与目录一、操作目录的常用函数1、os 模块提供的操作目录的函数2、os.path 模块提供的操作目录的函数 二、相对…

图像检索,目标检测map的实现

一、图像检索指标Rank1,map 参考&#xff1a;https://blog.csdn.net/weixin_41427758/article/details/81188164?spm1001.2014.3001.5506 1.Rank1: rank-k&#xff1a;算法返回的排序列表中&#xff0c;前k位为存在检索目标则称为rank-k命中。 常用的为rank1&#xff1a;首…

Flutter 宽高自适应

在Flutter开发中也需要宽高自适应&#xff0c;手动写一个工具类&#xff0c;集成之后在像素后面直接使用 px或者 rpx即可。 工具类代码如下&#xff1a; import dart:ui;class HYSizeFit {static double screenWidth 0.0;static double screenHeight 0.0;static double phys…

.net老项目中Jquery访问webservice

.net老项目中Jquery访问webservice 1. xml类型返回 jQuery.ajax({type: "POST",async: false,url: "WebService/Evection.asmx/GetCheckUpApplyEForm",contentType: "application/json",data: "{lngEvectionID:" eformSNOriginal &…

后端返回可下载的xlsx文件,但是前端接收下载后为乱码

我的接收数据进行处理的代码为&#xff1a; download_signal_list() {return new Promise((resolve, reject) > {get_download_signal({project_id: this.projectId,version_id: this.versionId}).then(response > {const url window.URL.createObjectURL(new Blob([res…

iBooker 布客技术评论 20230818

一、程序员自检手册 为了避免焦虑&#xff0c;你首先需要做的就是梳理你的业务&#xff1a; &#xff08;1&#xff09;你所在的行业是轻资产还是重资产&#xff1f; 重资产就是人绕着机器转&#xff0c;创业需要买一大堆设备。如果是重资产&#xff0c;赶紧换一个。 &…

Dockerfile文件详细

Dockerfile 是一个文本文件&#xff0c;里面包含组装新镜像时用到的基础镜像和各种指令&#xff0c;使用dockerfile 文件来定义镜像&#xff0c;然后运行镜像&#xff0c;启动容器。 dockerfile文件的组成部分 一个dockerfile文件包含以下部分&#xff1a; 基础镜像信息&…

SQL注入之万能用户名

文章目录 分析代码原理实现 分析代码 在安装的cms数据库目录C:\phpStudy\WWW\cms\admin下找到login.action.php文件&#xff0c;查看第20行&#xff0c;发现如下php代码&#xff1a; $user_row $db->getOneRow("select userid from cms_users where username "…

LightDB-A sequence支持MAXVALUE最大值与Oracle相同

功能介绍 Oracle数据库在创建sequence的时候可以支持设置maxvalue 为9999999999999999999999999999&#xff0c;这样的SQL在LightDB-A 23.3版本之前都是执行失败的。为了方便Oracle用户迁移到LightDB-A上&#xff0c;在LightDB-A 23.3版本上&#xff0c;增加了sequence支持max…

docker 04(docker 应用部署)

一、部署Mysql 需求: 在Docker容器中部署MySQL&#xff0c;并通过外部mysql客户端操作MySQLServer。 二、部署tomcat 三、部署nginx 四、部署redis