zoukankan      html  css  js  c++  java
  • Hutool之Http工具类使用

    最早接触Hutool这个集常用工具类为一体的框架工具包是在2018年的时候(酒店业务需要调用第三方门锁API)。
    而后19年因为业务接触到Bmob云,开始写对Bmob云的API,于是便有了这篇文章Hutool工具类之HttpUtil使用Https

    最近针对业务,再次用到这个。这次涉及到不同单个服务之间的调用,通信方式还是HTTP为主。

    针对最近常用的,做了一些总结。

    二、应用场景

    • (1)调用第三方服务API(第三方服务通常支持HTTP、WebService,一般HTTP比较多);
    • (2)单体应用服务之间的服务调用;
    • (3)分布式服务之间的服务调用;

    二、HttpUtil

    官方文档地址:
    https://hutool.cn/docs/#/http/Http%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%B7%A5%E5%85%B7%E7%B1%BB-HttpUtil

    大家可以做个参考。

    1.Get请求

    String apiData = HttpUtil.get(url);
    
    String apiData = HttpUtil.get(url,timeout);
    
    String apiData = HttpUtil.get(url,paramMap);
    
    String apiData = HttpUtil.get(url,paramMap,timeout);
    
    String apiData = HttpUtil.createGet(url)
                   .execute().body();

    2.Post请求

    String apiData = HttpUtil.post(url,body);
    
    String apiData = HttpUtil.post(url,body,timeout);
    
    String apiData =HttpUtil.post(url,paramMap,timeout);
    
    String apiData =HttpUtil.post(url,paramMap);
    
    String apiData = HttpUtil.createPost(url)
            .body(reqDto.toString())
            .execute().body();

    至于apiData如何由String转成JSON格式化,可通过Hutools自带的JSONObject对象或者JSONArray对象进行转换。

    例子如下(以我调用博客园API为例):

    private String getToken() {
           String url = "https://api.cnblogs.com/token";//请求接口地址
           Map<String, Object> paramMap = new HashMap<>();
           paramMap.put("client_id", ClientId);
           paramMap.put("client_secret", ClientSecret);
           paramMap.put("grant_type", "client_credentials");
           String result = HttpUtil.post(url, paramMap);
    
           JSONObject jsonObject = new JSONObject(result);
    
           return "Bearer " + jsonObject.getStr("access_token");
    
       }

    上面是针对单一JSONObject对象,下面还有针对数组是如何拿到具体的元素(这里是我对接博客园API代码,拿到博客园各个博主的名称,然后根据名称去匹配URL,实现批量数据抓取):

    try {
    
               Integer pageMaxSize = 200;
    
               Integer pageSize = 30;
    
               for (int pageParentIndex = 0; pageParentIndex < pageMaxSize; pageParentIndex++) {
                
                   String homeApiPageData = cnBlogApiService.getSiteHomePostList(pageParentIndex, pageSize);
    
                   JSONArray getHomeApiPageData = new JSONArray(homeApiPageData);
    
    
                   if (getHomeApiPageData.size() > 0) {
    
                       for (int i = 1; i < getHomeApiPageData.size(); i++) {
    
    
                           JSONObject jsonObject = getHomeApiPageData.getJSONObject(i);
    
                           this.executeCnBlogsImportDataTask(jsonObject.getStr("BlogApp"));
                       }
    
                   }
               }
    
               return ResponseBaseDTO.createSuccResp(1);
           } catch (Exception e) {
               logger.error("/cnblogs/singleImport", e);
               return ResponseBaseDTO.createFailResp(e.getMessage());
           }
  • 相关阅读:
    L3-001. 凑零钱(深度优先搜索)
    L2-008. 最长对称子串
    java里面求交集并集补集
    eclipse里面ctrl+T查看继承树,左边的这些绿色红色,F,S,C代表什么意思
    树的遍历(已知前序遍历中序遍历求后序遍历,或者已知后序中序求先序)
    L1-009. N个数求和
    面试题系列之---【MySql事务隔离级别】
    我爱java系列---【待定】
    我爱java系列之---【商城项目微服务鉴权代码实现(二)—JWT在项目中的应用案例】
    我爱java系列之---【JWT实现微服务鉴权(一)】
  • 原文地址:https://www.cnblogs.com/youcong/p/14015628.html
Copyright © 2011-2022 走看看