背景
平常的开发中经常会遇到调用三方接口的需求,实现方法可以说五花八门,考虑项目规范以及便于维护,最好使用统一的请求发送工具,hutool中的HttpUtil就是一个不错的选择.对常见的get、post请求都已经进行了完整封装。下面结合具体的业务请求说一下如何使用,看一下请求发送是否够香够顺滑!
首先贴一下hutool的官方依赖以及官方文档:
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.2.4</version> </dependency>
官方文档地址:hutool官方链接
get请求
微信公众平台中的接口基本上都需要权限认证,接口中都需要传递access_token,所以获取access_token就是第一步操作.下面官方给出的获取方式:
好,下面就说明如何发送请求以及如何进行解析:
使用到的请求方式:HttpUtil.get("请求链接")
字符串拼接方式:StrUtil.format("拼接字符串模板", "参数1", "参数2");写法要比直接用+拼接更加优雅,另外日志打印也可以使用此方式!
响应参数解析方式:
JSONObject resultJsonObject = JSONUtil.parseObj("响应信息"); String "响应信息values"= responseJsonObject.getStr("响应信息key");
业务实现:
// 获取微信公众平台的accessToken public String getWxgAccessToken() { String appid="公众号appid信息"; String wxgSecret="公众号秘钥信息"; // 拼接请求链接 String requestUrl = StrUtil.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}", appid, wxgSecret); // 发送请求 String returnMsg = HttpUtil.get(requestUrl); JSONObject responseJsonObject = JSONUtil.parseObj(returnMsg); if(ObjectUtil.isNull(responseJsonObject)) throw new Exception("响应异常:获取信息为空!"); String accessToken = responseJsonObject.getStr("access_token"); return accessToken; }
Post请求
微信公众号中的服务号是支持给用户发送消息信息,现在有消息发送接口,官方文档如下:
此需求中要求发送post请求,请求参数上要有access_token,其余请求信息放到请求体中,具体的实现方式如下(偷懒直接把官方组装的格式复制了一下):
// 发送模板消息 public void sendWxgTemplateMessage() { // 组装消息内容 String touser=""; // 接收者openId String templateId=""; // 模板id String url=""; // 跳转路径(小程序之外) String appid=""; // 小程序appid String pagepath=""; // 小程序跳转路径 String client_msg_id=""; // 防重入id String first="岗位申请成功!"; // 副标题 String keyword1=""; // 关键词1 String remark="祝你面试成功!"; // 备注 String value="销售精英"; // 信息 String color=""; // 颜色 String messageStr="{\n" + " \"touser\":"+touser+",\n" + " \"template_id\":"+templateId+",\n" + " \"url\":"+url+", \n" + " \"miniprogram\":{\n" + " \"appid\":"+appid+",\n" + " \"pagepath\":"+pagepath+"\n" + " },\n" + " \"client_msg_id\":\"MSG_000001\",\n" + " \"data\":{\n" + " \"first\": {\n" + " \"value\":"+first+",\n" + " \"color\":\"#173177\"\n" + " },\n" + " \"keyword1\":{\n" + " \"value\":"+value+",\n" + " \"color\":\"#173177\"\n" + " },\n" + " \"keyword2\": {\n" + " \"value\":\"39.8元\",\n" + " \"color\":\"#173177\"\n" + " },\n" + " \"keyword3\": {\n" + " \"value\":\"2014年9月22日\",\n" + " \"color\":\"#173177\"\n" + " },\n" + " \"remark\":{\n" + " \"value\":"+remark+",\n" + " \"color\":\"#173177\"\n" + " }\n" + " }\n" + " }"; // 发送消息 String accessToken="accessToken"; // 发送请求 String returnMsg = HttpUtil.post(StrUtil.format("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={}", accessToken), messageStr); // 请求参数解析 JSONObject jsonObject = JSONUtil.parseObj(returnMsg); // 获取errmsg,判断消息发送是否成功 String errmsg = jsonObject.getStr("errmsg"); if(!StrUtil.equals("ok",errmsg)) throw new Exception("消息发送失败!"); }
以上是常见请求hutool的调用方式,平常项目开发中如果没有特殊要求还是使用封装好的工具类最好,可以避免重复"造轮子",也便于项目维护.看到这里如果对你有帮助,欢迎点赞或评论!