java里面封装https请求工具类2

其他写法
https://blog.csdn.net/weixin_44372802/article/details/132620809?spm=1001.2014.3001.5501

encodeJson 是请求参数的密文格式(大公司都是要对请求参数加密的)

ResponseBean 是自己或者对方定义的返回内容参数

public ResponseBean sendByEncodeJson(String encodeJson, String interfaceName) throws IOException {//构建完整urlMap<String, String>  urlMap = buildUrl(interfaceName);String url = JpHttpUtils.initUrl(sfUrl, urlMap);log.info("请求地址" + url+"请求报文" + encodeJson);String responseString = JpHttpUtils.post(url, encodeJson);log.info("远程接口响应:" + responseString);//JSON 字符串转换为 SfResponseBean 对象return new Gson().fromJson(responseString, SfResponseBean.class);}
public Map<String, String> buildUrl(String method) throws IOException {Map<String, String> map = new HashMap<>();map.put("appId",appId);map.put("source",source);map.put("appToken",appToken);map.put("userToken",userToken);map.put("method",method);map.put("timestamp",String.valueOf(System.currentTimeMillis()));map.put("v","1.0");return map;}
@Slf4j
public class JpHttpUtils {private static final Logger logger = LoggerFactory.getLogger(JpHttpUtils.class);private static final int SOCKET_TIMEOUT = 30000;// 请求超时时间private static final int CONNECT_TIMEOUT = 30000;// 传输超时时间/*** 发送xml请求到server端** @param url       xml请求数据地址* @param xmlString 发送的xml数据流* @return null发送失败,否则返回响应内容*/public static String sendPost(String url, String xmlString) {StringBuilder retStr = new StringBuilder();// 创建HttpClientBuilderHttpClientBuilder httpClientBuilder = HttpClientBuilder.create();// HttpClientCloseableHttpClient closeableHttpClient = httpClientBuilder.build();HttpPost httpPost = new HttpPost(url);//  设置请求和传输超时时间RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(SOCKET_TIMEOUT).setConnectTimeout(CONNECT_TIMEOUT).build();httpPost.setConfig(requestConfig);try {httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8");StringEntity data = new StringEntity(xmlString, StandardCharsets.UTF_8);httpPost.setEntity(data);CloseableHttpResponse response = closeableHttpClient.execute(httpPost);HttpEntity entity = response.getEntity();if (entity != null) {// 打印响应内容retStr.append(EntityUtils.toString(entity, "UTF-8"));logger.info("response:{}", retStr);}} catch (Exception e) {logger.error("exception in doPostSoap1_1", e);} finally {// 释放资源try {closeableHttpClient.close();} catch (IOException e) {e.printStackTrace();}}return retStr.toString();}public static String sendPostByForm(String url, Map<String,String> formMap) {List<NameValuePair> params=new ArrayList<NameValuePair>();for(Map.Entry<String, String> entry : formMap.entrySet()){params.add(new BasicNameValuePair(entry.getKey(),entry.getValue()));}HttpPost httppost = new HttpPost(url);httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");HttpResponse response = null;try {httppost.setEntity(new UrlEncodedFormEntity(params,"UTF-8"));HttpClient httpClient =HttpClientBuilder.create().build();response = httpClient.execute(httppost);} catch (IOException e) {e.printStackTrace();}HttpEntity httpEntity = response.getEntity();String result = null;try {result = EntityUtils.toString(httpEntity);} catch (Exception e) {e.printStackTrace();}System.out.println("sendPostByForm response:"+result);return result;}public static String sendPut(String url, String string, Map<String,String> headerMap) {StringBuilder retStr = new StringBuilder();// 创建HttpClientBuilderHttpClientBuilder httpClientBuilder = HttpClientBuilder.create();// HttpClientCloseableHttpClient closeableHttpClient = httpClientBuilder.build();HttpPost httpPost = new HttpPost(url);//  设置请求和传输超时时间RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(SOCKET_TIMEOUT).setConnectTimeout(CONNECT_TIMEOUT).build();httpPost.setConfig(requestConfig);try {httpPost.setHeader("Content-Type", "application/json");if(string!=null){StringEntity data = new StringEntity(string, StandardCharsets.UTF_8);httpPost.setEntity(data);}if (headerMap != null) {for (String key : headerMap.keySet()) {httpPost.setHeader(new BasicHeader(key, headerMap.get(key)));}}CloseableHttpResponse response = closeableHttpClient.execute(httpPost);HttpEntity entity = response.getEntity();if (entity != null) {// 打印响应内容retStr.append(EntityUtils.toString(entity, "UTF-8"));logger.info("response:{}", retStr);}} catch (Exception e) {logger.error("exception in doPostSoap1_1", e);} finally {// 释放资源try {closeableHttpClient.close();} catch (IOException e) {e.printStackTrace();}}return retStr.toString();}public static String doGet(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建uriURIBuilder builder = new URIBuilder(url);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();// 创建http GET请求HttpGet httpGet = new HttpGet(uri);// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doGet(String url) {return doGet(url, null);}/*** 带header参数* @param url* @param param* @return*/public static String doGetSetHeader(String url, Map<String, String> param,Map<String, String> headerMap) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建uriURIBuilder builder = new URIBuilder(url);// 设置请求的参数if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();// 创建http GET请求HttpGet httpGet = new HttpGet(uri);// 设置 Headerif (headerMap != null) {for (String key : headerMap.keySet()) {httpGet.setHeader(key, headerMap.get(key));}}// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doPost(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);// 创建参数列表if (param != null) {List<NameValuePair> paramList = new ArrayList<>();for (String key : param.keySet()) {paramList.add(new BasicNameValuePair(key, param.get(key)));}// 模拟表单UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);httpPost.setEntity(entity);}// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {if(null != response){response.close();}} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doPost(String url) {return doPost(url, null);}public static String doPostJson(String url, String json) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);// 创建请求内容StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);httpPost.setEntity(entity);// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {if(null != response){response.close();}} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doPostJson(String url, String json,Map<String,String> headers)  {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);for(String  key:headers.keySet()){httpPost.setHeader(key,headers.get(key));}// 创建请求内容StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);httpPost.setEntity(entity);// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {log.error("Exception",e);} finally {try {if(null != response){response.close();}} catch (IOException e) {e.printStackTrace();}}return resultString;}/*** 创建一个SSL信任所有证书的httpClient对象** @return*/public static CloseableHttpClient createSSLClientDefault() {try {SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {// 信任所有@Overridepublic boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {return true;}}).build();SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);return HttpClients.custom().setSSLSocketFactory(sslsf).build();} catch (KeyManagementException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (KeyStoreException e) {e.printStackTrace();}return HttpClients.createDefault();}//连接符public static final String SPE3_CONNECT = "&";//赋值符public static final String SPE4_EQUAL = "=";//问号符public static final String SPE5_QUESTION = "?";public static final String SPE1_COMMA = ",";//示意符public static final String SPE2_COLON = ":";public static final String ENCODING = "UTF-8";public static String initUrl(String host, Map<String, String> queries) throws UnsupportedEncodingException {StringBuilder sbUrl = new StringBuilder();sbUrl.append(host);if (null != queries) {StringBuilder sbQuery = new StringBuilder();for (Map.Entry<String, String> query : queries.entrySet()) {if (0 < sbQuery.length()) {sbQuery.append(SPE3_CONNECT);}if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(String.valueOf(query.getValue()))) {sbQuery.append(query.getValue());}if (!StringUtils.isBlank(query.getKey())) {sbQuery.append(query.getKey());if (!StringUtils.isBlank(String.valueOf(query.getValue()))) {sbQuery.append(SPE4_EQUAL);sbQuery.append(URLEncoder.encode(String.valueOf(query.getValue()), ENCODING));}}}if (0 < sbQuery.length()) {sbUrl.append(SPE5_QUESTION).append(sbQuery);}}return sbUrl.toString();}public static final int TIMEOUT = 30000;/*** HTTP -> POST** @param url* @param param* @return* @throws Exception*/public static String post(String url, String param) {String result = null;CloseableHttpClient httpclient = null;CloseableHttpResponse response = null;try {httpclient = HttpClients.createDefault();HttpPost postmethod = new HttpPost(url);RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(TIMEOUT).setConnectTimeout(TIMEOUT).setSocketTimeout(TIMEOUT).build();postmethod.setConfig(requestConfig);postmethod.addHeader("content-type", "application/json");postmethod.setEntity(new StringEntity(param, "UTF-8"));response = httpclient.execute(postmethod);int statusCode = response.getStatusLine().getStatusCode();if (statusCode == HttpStatus.SC_OK) {HttpEntity entity = response.getEntity();if (entity != null) {result = EntityUtils.toString(entity);}}} catch (Exception e) {log.error("post请求异常", e);} finally {try {httpclient.close();} catch (IOException e) {log.error("IOException post请求异常", e);}}return result;}
}
package com.bbyb.transportmonitor.utils.sf;import lombok.Data;import java.io.Serializable;/***  请求实体* @date 2024/5/31 10:02*/
@Data
public class SfResponseBean implements Serializable {/*** 接口状态 200 成功 其它异常*/private String code;private String message;private boolean success;private Model model;private String data;@Dataclass Model  implements Serializable {private String erpOrder;private String code;private String sfOrderNo;}
}

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

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

相关文章

今天是放假带娃的一天

端午节放假第一天 早上5点半宝宝就咔咔乱叫了&#xff0c;几乎每天都这个点醒&#xff0c;准时的很&#xff0c;估计他是个勤奋的娃吧&#xff0c;要早起锻炼婴语&#xff0c;哈哈 醒来后做饭、洗锅、洗宝宝的衣服、给他吃D3&#xff0c;喂200ml奶粉、给他洗澡、哄睡&#xff0…

代码随想录算法训练营第二十二天

题目&#xff1a;216. 组合总和 III 这道题和上道题非常类似&#xff0c;大体框架一样只不过修改一下终止条件而已 值得注意的是其中的剪枝条件的设置 一是靠现有的元素和已经大于目标和的话就提前终止&#xff0c;另一个是其中循环那个剪枝可以记住 i < n - (k - path.s…

YOLOv8改进 | 卷积模块 | 在主干网络中添加/替换蛇形卷积Dynamic Snake Convolution

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 蛇形动态卷积是一种新型的卷积操作&#xff0c;旨在提高对细长和弯曲的管状结构的特征提取能力。它通过自适应地调整卷积核的权重&#xff0…

【每日刷题】Day59

【每日刷题】Day59 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1103. 分糖果 II - 力扣&#xff08;LeetCode&#xff09; 2. 1051. 高度检查器 - 力扣&#xff08…

电子纸在日化行业的全新应用

电子纸在日化行业的全新应用 项目背景 在一日化龙头企业他们的洗衣粉产线在AGV小车取料到运输到产品包装工序时&#xff0c;因为取料粉车无明显区分标识&#xff0c;但是产品系列有十大类。在未采用晨控电子纸之前现场采用一个转盘分为十个区域&#xff0c;取料工序上方会有一…

Stream与MLC测试CPU内存DDR5的原理与方法详解

在高性能计算和服务器领域&#xff0c;内存性能是决定整体系统性能的关键因素之一&#xff0c;特别是随着DDR5内存的普及&#xff0c;其更高的带宽和更低的延迟特性使得内存性能测试变得更加重要。本文将详细介绍使用Stream和MLC两种工具对CPU内存DDR5进行性能测试的原理和实施…

我也想拥有一个漂亮的网站

我也想拥有一个漂亮的网站 别人的公司几乎每个都有好看的网站&#xff0c;我也想拥有 如今在互联网上网站的存在已经非常的不稀奇了&#xff0c;可以在各大搜索引擎上面查到大量的网站&#xff0c;各行各业的网站都有&#xff0c;千奇百态&#xff0c;什么风格的网站都有…

整理好了!2024年最常见 20 道分布式、微服务面试题(四)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 20 道分布式、微服务面试题&#xff08;三&#xff09;-CSDN博客 七、单体应用与微服务架构有何不同&#xff1f; 单体应用&#xff08;Monolithic Application&#xff09;和微服务架构&#xff08;Microservices A…

Transformer 内部原理学习

Transformer 内部原理 想象一下&#xff0c;Transformer 是一个超级智能的团队&#xff0c;每个成员&#xff08;模块&#xff09;都有特定的职责&#xff0c;共同完成一个复杂的任务&#xff0c;比如理解一篇文章或翻译一句话。下面&#xff0c;我们逐步拆解这个团队的工作流…

自动化喷涂生产线方案四

上一篇文章讲了单工作站的自动化喷涂生产线方案&#xff0c;主要是单柜集成的方式&#xff0c;本章介绍在单柜基础上进行扩展&#xff0c;增加一个180kg负载的搬运机械臂&#xff0c;同时配合三台单柜实现多工作站同时喷涂作业的生产线方案。 单工作站可以实现单个机械臂的喷涂…

JDK8安装详细教程教程-windows

&#x1f4d6;JDK8安装详细教程教程-windows ✅1. 下载✅2. 安装 ✅1. 下载 123云盘下载地址&#xff1a; JDK8 | JDK11 | JDK17 官方Oracle地址&#xff1a;https://www.oracle.com/java/technologies/downloads/archive/ ✅2. 安装 运行jdk-8u211-windows-x64.exe安装包文…

WebAPI AOP方式 异常方式 FilterAttribute、ActionFilterAttribute

》》 自定义异常处理特性 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web; using System.Web.Http.Filters;namespace WebApplication11 {/// <summary>/// 异常处理特性/// </sum…

278 基于Matlab GUI的中重频PD雷达仿真系统

基于Matlab GUI的中重频PD雷达仿真系统。具有26页文档报告。仿真雷达信号的发射、传播、散射、接收、滤波、信号处理、数据处理的全部物理过程&#xff0c;因此应当实现对雷达发射机、天线、接收机、回波信号处理、数据处理的建模与仿真。程序已调通&#xff0c;可直接运行。 2…

使用OpenPCDet训练与测试Transformer模型:如何加载自己的数据集

引言 Transformer架构因其强大的序列处理能力和长距离依赖捕捉能力&#xff0c;在自然语言处理领域取得了巨大成功。近年来&#xff0c;这一架构也被引入3D物体检测领域&#xff0c;如Voxel Transformer等&#xff0c;显著提升了模型在复杂场景下的检测性能。OpenPCDet整合了多…

How To: Localize Bar and Ribbon Skin Items

您可以使用Localizer对象自定义皮肤菜单&#xff0c;而不是迭代每个条形皮肤子菜单项和功能区皮肤库项容器来手动修改这些项。此方法允许您同时自定义所有现有栏子菜单和功能区库中的外观项目。 创建BarLocalizer类的派生类并重写XtraLocalizer.GetLocalizedString方法。 pub…

深入解析MongoDB中的锁机制

目录 一、MongoDB简介 二、MongoDB锁机制 三、锁的实践影响 3.1 高并发写入导致的写锁案例 一、MongoDB简介 MongoDB 作为一种非关系型文档数据库&#xff0c;在现代应用中扮演着极其重要的角色&#xff0c;尤其在处理大规模、高并发、灵活数据模型的场景下。MongoDB 具有如…

【STM32】µC/OS-III多任务程序

【STM32】C/OS-III多任务程序 一、探究目的二、探究原理2.1 嵌入式操作系统2.1.1 RTOS2.1.2 前后台系统2.1.2 C/OS-III 三、探究过程&#xff08;实验一&#xff09;3.1 μC/OS-III环境配置3.1.1 CubeMX配置3.1.2 下载μC/OS-III源码3.1.3 KEIL环境配置3.1.4 KEIL代码更改3.1.5…

大模型应用:基于Golang + 大模型构建简易的电商售前对话服务

1.背景 某X互联网电商公司为了解决当前大量用户的售前咨询问题&#xff0c;需要建设一个不需要客服介入的简易电商售前机器人&#xff0c;用于回答用户的售前问题&#xff0c;并给出基本可靠的咨询回答。 当前大模型如gpt、baichuan、文心等均有开放使用的OpenAPI接口&#xf…

ROS学习记录:栅格地图格式

一、机器人导航所使用的地图数据&#xff0c;就是ROS导航软件包里的map_server节点在话题 /map 中发布的消息数据&#xff0c;消息类型是nav_msgs消息包中的OccupancyGrid&#xff0c;它的中文意思的占据栅格&#xff0c;是一种正方形小格子组成的地图。 二、对障碍物进行俯视&…

1-什么是护网行动

1.什么是护网行动 2016年&#xff0c;公安部会同民航局、国家电网组织开展了“护网2016”网络安全攻防演习活动。同年&#xff0c;《网络安全法》颁布&#xff0c;出台网络安全演练相关规定:关键信息基础设施的运营者应“制定网络安全事件应急预案&#xff0c;并定期进行演练”…