栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Hutool的客户端工具HttpUtil调用第三方接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hutool的客户端工具HttpUtil调用第三方接口

学习目标:

最近公司要接入第三方公司的api,下面实体类的会写请求参数和返会参数,也是弄了很久才弄出来,就想记录一下
请求方式method:post
实时接口服务以 http post 实现 提交格式为 from-data。
最终的签名值sign
Sign=MD5(appId=123456¶m=p&time=1527057327764&key=secret).toUpperCase()


学习内容:

1.接入依赖


            com.alibaba
            fastjson
            1.2.68
        
        
            cn.hutool
            hutool-all
            5.4.5
        

只要把依赖引入,它下面的工具都可以用了

  1. 将返回参数和请求参数封装成实体类
请求参数,一会sign签名还要用到
    private String appId;
    private  Long time;
    private String sign;
    private String startTime;
    private Integer regionId;
    private Integer pageSize;
    private  String userId;
    private  String username;
    private  String userTel;
    private  Integer identity;
    private  String imgPath;
    private  Integer point;
    private  Double weight;
    private  Integer collectType;
    private  String collectUser;
    private  Integer village;
    private  Integer build;
    private  Integer unit;
    private  String address;
    private  Integer rubbishType;
    private  String createTime;
    private  String putTime;

这就是返回参数的实体类,就是别人接口文档上的

  1. 计算签名
    签名的要求
    获取所有请求参数,剔除sign字段,剔除值为空的参数,并按照第一个字符的键值ASCII码递增排序(字母升序排序)
    使用md5加密,将加密后的结果转化成大写最终的签名值sign
  
    private String sign(EnvironmentDTO dto, String time) {
        Map map = new HashMap<>();
        Map result = new HashMap<>();
        map.put("appId", dto.getAppId());
        map.put("regionId", dto.getRegionId());
        map.put("time", time);
        map.put("pageSize", dto.getPageSize());
        map.put("startTime", dto.getStartTime());
        map.entrySet().stream()
                .sorted(Map.Entry.comparingByKey())
                .forEachOrdered(x -> result.put(x.getKey(), x.getValue()));
        StringBuilder s = new StringBuilder();
        result.forEach((key, value) -> {
            s.append(key);
            s.append(value);
        });
        s.append("e^Qj!vm2LODwn$1X");
        return SecureUtil.md5(s.toString()).toUpperCase();
    }

4.接入http post请求,获取数据

    
    public JSONObject populateMapost(String url, EnvironmentDTO dto) {

        Map map = new HashMap<>();
        map.put("appId", dto.getAppId());
        map.put("regionId", dto.getRegionId());
        map.put("time", dto.getTime());
        map.put("pageSize", dto.getPageSize());
        map.put("sign", this.sign(dto, url));
        String rusult = HttpRequest.post(url)
                .form(map)
                .header("Content-Type", CONTENT_TYPE)
                .header("connection", "Keep-Alive")
                .timeout(20000)
                .execute()
                .body();
        JSONObject datas = JSONObject.parseObject(rusult);
        return datas;
    }

5.接入数据以后对数据进行转换

public CollectInformationRes getData(JSONObject datas) {
        //调用方法,回去"datas"里面的数据
        CollectInformationRes collectInformationRes = JSONObject.toJavaObject(datas, CollectInformationRes.class);
        if (collectInformationRes != null) {

            System.out.println(collectInformationRes);
        }
        return null;
    }

我这里就做了简单的逻辑,把接收到的json数据转换成对象,因为拿到数据以后,我们还要接入到我们的平台的sdk接入

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/918748.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号