有时候会将参数(返回结果)压缩(解压),加密(解密)

将json参数通过GZip压缩  Base64加密

 1 public static String gzipAndEncryption(String data){
2 String result = "";
3
4 try {
5 //请求参数的数据压缩
6 ByteArrayOutputStream out = new ByteArrayOutputStream();
7 GZIPOutputStream gzip = new GZIPOutputStream(out);
8 if (StrUtil.isEmpty(data)) {
9 log.warn("传递请求参数为空");
10 return result;
11 }
12 gzip.write(data.getBytes());
13
14 out.close();
15 gzip.close();
16
17 //加密
18 result = new BASE64Encoder().encodeBuffer(out.toByteArray());
19
20 } catch (Exception e) {
21 log.error("请求参数压缩加密失败,失败原因:{}",e);
22 }
23 log.info("请求参数压缩加密结果:" + result);
24 return result;
25 }

将返回结果Base64解密  GZip解压

 1  public static String decryptionAndUnzip(String data){
2 String result = "";
3
4 try {
5 //解密
6 ByteArrayOutputStream out = new ByteArrayOutputStream();
7 byte[] c = new Base64().decode(data);
8 //解压
9 ByteArrayInputStream in = new ByteArrayInputStream(c);
10 GZIPInputStream gunzip = new GZIPInputStream(in);
11 byte[] buffer = new byte[1024];
12 int offset = -1;
13 while ((offset = gunzip.read(buffer)) >= 0) {
14 String s = new String(buffer, StandardCharsets.UTF_8);
15 buffer = s.getBytes();
16 out.write(buffer, 0, offset);
17 }
18 result = out.toString();
19 log.info("响应参数解密解压结果:" + result);
20 out.close();
21 in.close();
22 gunzip.close();
23
24 } catch (IOException e) {
25 log.warn("响应参数解密解压失败,失败原因:{}",e);
26 }
27
28 return result;
29 }

发送post请求

 1 public static String sendHttpPost(String url,String param){
2 String result = null;
3
4 try {
5 HttpClient httpClient = new HttpClient();
6 PostMethod postMethod = new PostMethod(url);
7
8 //压缩加密参数
9 String paramStrPwd = gzipAndEncryption(param);
10
11 RequestEntity se = new StringRequestEntity(paramStrPwd,"application/json" ,"UTF-8");
12
13 postMethod.setRequestEntity(se);
14 postMethod.setRequestHeader("Content-Type","application/json");
15 postMethod.addRequestHeader("accept-encoding", "gzip");
16 postMethod.addRequestHeader("content-encoding", "gzip");
17
18 httpClient.executeMethod(postMethod);
19 String response = postMethod.getResponseBodyAsString();
20
21 //响应结果解密解压缩
22 result = decryptionAndUnzip(response);
23 } catch (Exception e) {
24 log.info("请求调用失败,请求路径:{},请求参数:{},失败原因:{}",url,param,e);
25 }
26
27 return result;
28 }

httpclient调用接口的更多相关文章

  1. httpClient调用接口的时候,解析返回报文内容

    比如我httpclient调用的接口返回的格式是这样的: 一:data里是个对象 { "code": 200, "message": "执行成功&qu ...

  2. 使用HttpClient调用接口

    一,编写返回对象 public class HttpResult { // 响应的状态码 private int code; // 响应的响应体 private String body;get/set ...

  3. 使用httpClient调用接口,参数用map封装或者使用JSON参数,并转换返回结果

    这里接口用表存起来,标记请求方式,然后接受参数,消息或者请求参数都可以, 然后先是遍历需要调用的接口,封装参数,再分别调用get与post即可,没有微服务还是得自己写 //消息转发-获取参数中对应参数 ...

  4. java通过HttpClient调用接口总结

    2.HttpClient 2.1简介: 最近看项目的代码,看到工程中有两个jar包张的很像,一个是commons.httpclient-3.1.jar,一个是httpclient4.2.1.jar,很 ...

  5. 使用httpClient调用接口获取响应数据

    转自:https://blog.csdn.net/shuaishuaidewo/article/details/81136088 import lombok.extern.slf4j.Slf4j; i ...

  6. 使用HttpClient调用第三方接口

    最近项目中需要调用第三方的Http接口,这里我用到了HttpClient. 首先我们要搞明白第三方接口中需要我们传递哪些参数.数据,搞明白参数以后我们就可以使用HttpClient调用接口了. 1.调 ...

  7. 使用HttpClient访问接口(Rest接口和普通接口)

    这里总结一下使用HttpClient访问外部接口的用法.后期如果发现有什么缺陷会更改.欢迎读者指出此方法的不足之处. 首先,创建一个返回实体: public class HttpResult { // ...

  8. springMVC、httpClient调用别人提供的接口!!!(外加定时调用)

    import com.ibm.db.util.AppConfig; import com.ibm.db.util.JacksonUitl; import org.apache.http.HttpEnt ...

  9. HttpClient方式调用接口的实例

    使用HttpClient的方式调用接口的实例. public class TestHttpClient { public static void main(String[] args) { // 请求 ...

  10. 服务端调用接口API利器之HttpClient

    前言 之前有介绍过HttpClient作为爬虫的简单使用,那么今天在简单的介绍一下它的另一个用途:在服务端调用接口API进行交互.之所以整理这个呢,是因为前几天在测试云之家待办消息接口的时候,有使用云 ...

随机推荐

  1. SEO初学者指南之什么是SEO

    前言 Hi,大家好,我是听风.欢迎来到SEO基础入门指南.在这个博客中主要教大家SEO的基础知识,以谷歌SEO为主,重点放在实操方面. 虽然是基础入门教程,但我希望朋友们不要对"初学者&qu ...

  2. golang对遍历目录操作的优化

    一转眼go1.23都快发布了,时间过得真快. 不过今天我们把时间倒流回三年半之前,来关注一个在go1.16引入的关于处理目录时的优化. 对于go1.16的新变化,大家印象最深的可能是io包的大规模重构 ...

  3. Python将信息发送到指定邮箱

    目的:将Python执行脚本结果发送到指定邮箱 使用场景:可将每天.每周定时任务python跑的结果汇总,定时发送到小组成员/领导邮箱中 1.以下163邮箱为例,设置发件人是163邮箱,接收人是qq邮 ...

  4. centos8配置网络环境及阿里云网络yum源

    一.centos8配置网络环境 1.修改配置网卡配置文件 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens18 TYPE ...

  5. P5665 [CSP-S2019] 划分

    思路: 首先求出 \(a\) 的前缀和数组 \(s\). 考虑动态规划,令 \(dp_{i,j}\) 表示以 \(i\) 结尾,末尾有 \(j\) 个为一组的最小答案,则状态转移方程为: \[dp_{ ...

  6. 【Java】EasyCaptcha 封装验证码接口

    依赖坐标: <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-cap ...

  7. 中国2023年GDP增速5.2%

    在中美贸易战和三年全球疫情的大背景下,我国的经济依旧保持强有力的增速,这表明了经济发展不断转好,一切恢复到疫情和贸易战之前也是有待期望的.

  8. Mybatis-Plus系统化学习之环境准备与简单使用

    1.背景 平时在开发中会经常用到单表的CRUD操作 其实,这些单表的CRUD,完全不需要我们写sql,可以使用mybatis-plus自动生成,不但高效而且不容用出错! 2.mybatis-plus的 ...

  9. [COCI 2023/2024 #1] Mostovi 题解

    前言 题目链接:洛谷. 题目分析 首先可以确定的是需要枚举断边,所以我们希望两次枚举之间能有些关联.不难想到类树形 DP 的套路,建 DFS 树,只不过这题除了讨论和父亲之间的边,还要考虑返租边.以下 ...

  10. Codeforces Round894.D

    题目:D. Ice Cream Balls 题目链接:https://codeforces.com/contest/1862/problem/D 思路:二分找到当所有冰淇淋球类型不同的情况下,假设记位 ...