SpringBoot 封装Http请求

1.引入jar包

        <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.10</version></dependency>

2.HttpUtils操作类封装

package com.gnss.gis.utils;import com.gnss.gis.model.http.HttpResult;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
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.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.util.HashMap;
import java.util.Map;/*** Http Request Tool Class* @author Mr.Li* @date 2022-12-09*/
@Slf4j
public class HttpUtils {private HttpUtils() {}private static CloseableHttpClient httpClient = HttpClientBuilder.create().build();/*** Send Http Post Request* @param url* @param paramsJson* @param headsMap* @return* @throws IOException*/public static HttpResult httpPost(String url, String paramsJson, Map<String, String> headsMap) throws IOException {HttpResult httpResult = new HttpResult();try {CloseableHttpClient httpClient = HttpClients.createDefault();HttpPost httpPost = new HttpPost(url);RequestConfig config = RequestConfig.custom().setConnectionRequestTimeout(3000).setSocketTimeout(3000).setConnectTimeout(3000).build();httpPost.setConfig(config);if (headsMap != null && !headsMap.isEmpty()) {headsMap.forEach((key, value) -> {httpPost.addHeader(key, value);});}else{headsMap=new HashMap<>();}if (headsMap.containsKey("Content-type")) {httpPost.addHeader("Content-type", "application/json;charset=utf-8");}StringEntity stringEntity = new StringEntity(paramsJson, "UTF-8");stringEntity.setContentType("application/json");httpPost.setEntity(stringEntity);CloseableHttpResponse response = httpClient.execute(httpPost);if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {HttpEntity result = response.getEntity();String resultStr = null;if (result != null) {resultStr = EntityUtils.toString(result, "UTF-8");}httpClient.close();response.close();httpResult.setStatus(HttpStatus.SC_OK);httpResult.setResult(resultStr);return httpResult;} else {httpResult.setStatus(response.getStatusLine().getStatusCode());httpResult.setResult("");return httpResult;}}catch (Exception ex) {httpResult.setStatus(HttpStatus.SC_NOT_FOUND);httpResult.setResult(ex.getMessage());return httpResult;}}/*** For get requests without parameters, if the status code is 200, the system returns the body. If the status code is not 200, the system returns null** @param url* @return* @throws Exception*/public static String httpGet(String url,Map<String,String> headerMap) {try {HttpGet httpGet = new HttpGet(url);for(String key:headerMap.keySet()) {httpGet.addHeader(key,headerMap.get(key));}RequestConfig config = RequestConfig.custom().setConnectionRequestTimeout(3000).setSocketTimeout(3000).setConnectTimeout(3000).build();httpGet.setConfig(config);CloseableHttpResponse response = httpClient.execute(httpGet);if(response!=null) {return EntityUtils.toString(response.getEntity(), "UTF-8");}else {return null;}}catch (Exception e) {return null;}}
}

Http请求应答结果实体类

package com.gnss.gis.model.http;import lombok.Data;/*** Http 应答* @author Mr.Li* @date 2022-07-27*/
@Data
public class HttpResult {private Integer status;private String result;
}

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

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

相关文章

MySQL 知识目录

MySQL 知识相关目录主要参考尚硅谷 宋红康老师的视屏&#xff0c;参考链接为 尚硅谷MySQL入门到高级-宋红康版_哔哩哔哩_bilibili 1、基础篇 数据库概述 链接&#xff1a;数据库概述-CSDN博客基本的select语句 链接&#xff1a;基本的select语句-CSDN博客mysql 运算符 链接&a…

一文读懂Vue中的el-dialog(附Demo)

目录 前言1. 基本知识2. Demo 前言 原先对于该知识点写过一个Demo&#xff0c;推荐阅读&#xff1a;点击按钮框来选择相应信息&#xff08;Vue Java&#xff09; 1. 基本知识 el-dialog 是 Element UI 框架中的一个组件&#xff0c;用于创建对话框 提供了丰富的功能和选项…

Day8-Python基础学习之地图和柱状图构建

构建地图 # 地图可视化基本使用 from pyecharts.charts import Map from pyecharts.options import * ​ # 准备地图对象 map Map() # 准备数据 data [("北京市", 99),("上海市", 199),("湖南省", 299),("台湾省", 399),("广东…

积分学<4>——定积分的性质

索引 定积分的性质远算性质定理4.1 定积分的线性性定理4.2 定积分的乘积可积性定理4.3 定积分的保序性定理4.4 定积分的绝对可积性定理4.5 定积分的区间可加性 积分中值定理积分第一中值定理 定积分的性质 远算性质 定理4.1 定积分的线性性 若函数 f ( x ) f\left ( x \righ…

Leetcode 3117. Minimum Sum of Values by Dividing Array

Leetcode 3117. Minimum Sum of Values by Dividing Array 1. 解题思路2. 代码实现 题目链接&#xff1a;3117. Minimum Sum of Values by Dividing Array 1. 解题思路 这一题思路上就是一个动态规划&#xff0c;我们只需要考察每一个元素是否需要放在当前的group当中还是作…

使用Python爬虫代理IP快速增加博客阅读量

目录 前言 二、Python爬虫代理IP技术简介 1.什么是爬虫&#xff1f; 2.什么是代理IP&#xff1f; 3.为什么使用代理IP&#xff1f; 三、使用Python爬虫代理IP增加博客阅读量的步骤 1.获取代理IP地址 2.模拟多次访问 3.定时任务 四、注意事项 五、总结 前言 随着互联…

Matlab 2024安装教程(附免费安装包资源)

鼠标右击软件压缩包&#xff0c;选择“解压到MatlabR2024a“。 2.打开解压后的文件夹&#xff0c;鼠标右击“MATHWORKS_R2024A“选择装载。 鼠标右击“setup“选择”以管理员身份运行“。点击“是“&#xff0c;然后点击”下一步“。复制一下密钥粘贴至输入栏&#xff0c;然后…

【Tars-go】腾讯微服务框架学习使用01--初始化服务

1 初始INIT-Demo运行 按照官网描述 go get 安装框架依赖 # < go 1.16 go get -u github.com/TarsCloud/TarsGo/tars/tools/tarsgo go get -u github.com/TarsCloud/TarsGo/tars/tools/tars2go # > go 1.16 go install github.com/TarsCloud/TarsGo/tars/tools/tarsgolat…

SSH安全设置

今天发现自己的公有云服务器被攻击了 然后查看了登录日志&#xff0c;如上图 ls -sh /var/log/secure vim /var/log/secure然后增加了安全相关的设置 具体可以从以下方面增加安全性&#xff1a; 修改默认SSH端口公有云修改安全组策略及防火墙端口设置登录失败次数锁定用户及限…

MySQL事务与事务原理

目录 事务 事务的四大特性ACID 事务隔离级别 事务原理 存储引擎 四大特性的保证 MVCC 事务链 ReadView 事务 事务指逻辑上的一组操作&#xff0c;组成这组操作的各个单元&#xff0c;要么全部成功&#xff0c;要么全部失败。 start transaction; -- 开启事务 或者 b…

B端:设置页面如何减少用户的录入操作。

录入操作尤其是文字录入是比较是比较繁琐的&#xff0c;尤其是在移动端小屏幕上&#xff0c;简直就是灾难。不过我们可以通过合理的设置、识别、记忆、自动填充等技术来有效的减少录入。 在 B 端设置页面中&#xff0c;可以采取多种方式来减少用户的录入操作&#xff0c;提高用…

MacOS Python版本管理(pyenv)

1. 通过 homebrew 安装 pyenv brew update brew install pyenv 2. 修改 zsh profile 否则通过pyenv切换python版本会不生效 # 编辑 .zshrc or ~/.bash_profile vim ~/.zshrc# 在配置下面增加 export PYENV_ROOT"$HOME/.pyenv" export PATH"$PYENV_ROOT/shi…

python__构造方法

魔术方法 1、__init__()方法&#xff0c;被称为构造方法&#xff0c;在创建类对象时&#xff0c;会自动执行&#xff0c;在创建类对象的时候&#xff0c;会将传入的参数自动传递给__init__()方法。 class Student:name Noneage Nonetel Nonedef __init__(self,name,age,te…

第二期书生浦语大模型训练营第三次作业

任务一&#xff1a;在茴香豆 Web 版中创建自己领域的知识问答助手 构建个人回答助手 进入web页面&#xff0c;传输属于自己的文件&#xff0c;此处进行输入大量投资领域资料&#xff0c;构建个人投资者问答助手 回答示例 茴香豆缺陷 此处会发现茴香豆仍然存在一些缺点&#…

长短期记忆网络 – Long short-term memory | LSTM

目录 简单的例子理解LSTM LSTM的输入和输出信息。 隐状态和细胞状态是什么

一、基础算法-快速排序

1.快速排序 快速排序主要利用了分治的思想&#xff0c;具体步骤为&#xff1a; step1 确定分界点&#xff0c;常用为q[left],q[right],q[mid]&#xff0c;也可以是随机的 step2 调整区间&#xff0c;将比分界点小的放左边&#xff0c;大的放右边 step3 利用递归处理左右两端 …

ubuntu下利用ffmpeg工具将视频帧推流至rtsp

1、win10安装播放器 推荐安装 PotPlayer 64 bit。此播放器可以打开推流链接进行播放。 2、安装ffmpeg 建议在python环境中安装&#xff1a; 2.1、pip换清华源pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip config set global.trusted-hos…

Web攻防10_PHP反序列化_概念魔术方法POP链构造

文章目录 1、什么是反序列化操作&#xff1f; - 类型转换2、常见PHP魔术方法- 对象逻辑魔术方法概念常见魔术方法魔术方法与反序列化漏洞 3、反序列化安全漏洞原理&#xff1a;漏洞探针漏洞危害 4、反序列化漏洞利用- POP链构造反序列化常见起点反序列化常见跳板反序列化常见终…

html单页使用vue

html单页使用vue <!DOCTYPE html> <html><head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0, shrink-to-fitno, minimum-scale1.0, maximum-scale1.0, user-scalableno&q…

LeetCode 19. 删除链表的倒数第 N 个结点

LeetCode 19. 删除链表的倒数第 N 个结点 1、题目 力扣题目链接&#xff1a;19. 删除链表的倒数第 N 个结点 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a; head [1,2,3,4,5], n 2 输出&am…