背景
平常的开发中经常会遇到调用三方接口的需求,实现方法可以说五花八门,考虑项目规范以及便于维护,最好使用统一的请求发送工具,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的调用方式,平常项目开发中如果没有特殊要求还是使用封装好的工具类最好,可以避免重复"造轮子",也便于项目维护.看到这里如果对你有帮助,欢迎点赞或评论!