最近在开发去水印小程序,需要在后端请求解析视频的链接,其中一些请求需要加入header头,或者获取重定向的链接,还有对请求数据json的解析。这部分操作虽然不复杂,但是自己再封装一个工具类就太重复制造轮子了,所以找了一个黑科技工具类--hutool工具类。
这里先看一下我使用这个工具类干了点啥吧!
首先,是http请求
//创建header头
HashMap headers = MapUtil.newHashMap();
headers.put("User-Agent",
"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1");
headers.put("Referer", url);
headers.put("Accept-Encoding", "gzip, deflate, br");
headers.put("Accept-Language", "zh-CN,zh;q=0.9");
headers.put("Pragma", "no-cache");
headers.put("Cache-Control", "no-cache");
headers.put("Upgrade-Insecure-Requests", "1");
//http请求
HttpResponse execute = HttpUtil.createGet(url).addHeaders(headers).execute();
//获取返回code
if (execute.getStatus() != 302) {
return result;
}
//获取重定向地址
String redirectUrl = execute.header("Location");
//处理地址
String requestUrl = redirectUrl.split("&jsonp=")[1].split("&")[0];
requestUrl = "http:" + URLDecoder.decode(requestUrl, "utf-8");
//第二次请求
String body = HttpUtil.createGet(requestUrl).execute().body();
看上面的代码,是不是感觉hutool在http请求上很无敌啊。
其次是对json的处理
String body = HttpUtil.createGet(reqUrl).addHeaders(headers).execute().body();
JSON res = JSONUtil.parse(body);
String imageUrl = JSONUtil.getByPath(res, "data.video.cover").toString();
String videoUrl = JSONUtil.getByPath(res, "data.video.url.0").toString();
在json的处理上也是黑科技,不用一个个get 直接点点就出来了
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
Hutool中的工具方法来自于每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;
Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变我们写代码的方式。
GitHub地址:https://github.com/looly/hutool/issues
码云地址:https://gitee.com/loolly/hutool/issues
包含组件
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
模块介绍
hutool-aopJDK动态代理封装,提供非IOC下的切面支持
hutool-bloomFilter布隆过滤,提供一些Hash算法的布隆过滤
hutool-cache简单缓存实现
hutool-core核心,包括Bean操作、日期、各种Util等
hutool-cron定时任务模块,提供类Crontab表达式的定时任务
hutool-crypto加密解密模块,提供对称、非对称和摘要算法封装
hutool-dbJDBC封装后的数据操作,基于ActiveRecord思想
hutool-dfa基于DFA模型的多关键字查找
hutool-extra扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
hutool-http基于HttpUrlConnection的Http客户端封装
hutool-log自动识别日志实现的日志门面
hutool-script脚本执行封装,例如Javascript
hutool-setting功能更强大的Setting配置文件和Properties封装
hutool-system系统参数调用封装(JVM信息等)
hutool-jsonJSON实现
hutool-captcha图片验证码实现
hutool-poi针对POI中Excel的封装
hutool-socket基于Java的NIO和AIO的Socket封装
可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块。
Maven
在项目的pom.xml的dependencies中加入以下内容:
cn.hutool
hutool-all
5.2.5
Gradle
compile 'cn.hutool:hutool-all:5.2.5'
非Maven项目
下载hutool-all-X.X.X.jar即可:
注意 Hutool 5.x支持JDK8+,对Android平台没有测试,不能保证所有工具类获工具方法可用。如果你的项目使用JDK7,请使用Hutool 4.x版本
一般的公司是禁止使用这样的工具类的。但是在你的个人项目下可以集合该工具类,既方便又实用。当然这个工具类很多思想是值得我们去学习的,可以抽出hutool的你觉得要用的代码放到平时的公司代码里也是高大上的啊!
最后感谢hutool的开发者给我们提供了这么强大的一个工具类