SpringBoot小程序推送信息的项目实践

 更新时间:2022年04月17日 11:39:44   作者:李日兴lrx  
本文主要介绍了SpringBoot小程序推送信息的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.小程序推送信息列如我们去餐厅等位有预约提醒,剩余桌数

首先申请一个小程序,微信开放平台:小程序

2.申请小程序信息,申请信息模板

appid

 AppSecret

3.根据开发文档开发

subscribeMessage.send | 微信开放文档

4.代码如下:

引入依赖

 <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.2</version>
    </dependency>

先准备一个HTTP工具类Z

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;
 
import java.io.IOException;
 
/**
 * @author lrx
 * @description: TODO
 * @date 2021/3/9 9:50
 */
public class HttpClientUtils {
    //Http协议GET请求
    public static String httpGet(String url) throws IOException {
        //初始化HttpClient
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //创建HttpGet
        HttpGet httpGet = new HttpGet(url);
        //发起请求,获取response对象
        CloseableHttpResponse response = httpClient.execute(httpGet);
        //获取请求状态码
        //response.getStatusLine().getStatusCode();
        //获取返回数据实体对象
        HttpEntity entity = response.getEntity();
        //转为字符串
        String result = EntityUtils.toString(entity, "UTF-8");
        return result;
 
    }
 
    //Http协议Post请求
    public static String httpPost(String url, String json) throws Exception {
        //初始HttpClient
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //创建Post对象
        HttpPost httpPost = new HttpPost(url);
        //设置Content-Type
       /* httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");*/
        StringEntity se = new StringEntity(json,"UTF-8");
        se.setContentType("application/x-www-form-urlencoded");
        httpPost.setEntity(se);
        //发起请求,获取response对象
        CloseableHttpResponse response = httpClient.execute(httpPost);
        //获取请求码
        //response.getStatusLine().getStatusCode();
        //获取返回数据实体对象
        HttpEntity entity = response.getEntity();
        //转为字符串
        String result = EntityUtils.toString(entity, "UTF-8");
        return result;
    }
 
    //Https协议Get请求
    public static String httpsGet(String url) throws Exception {
        CloseableHttpClient hp = createSSLClientDefault();
        HttpGet hg = new HttpGet(url);
        CloseableHttpResponse response = hp.execute(hg);
        HttpEntity entity = response.getEntity();
        String content = EntityUtils.toString(entity, "UTF-8");
        hp.close();
        return content;
    }
 
    //Https协议Post请求
    public static String httpsPost(String url, String json) throws Exception {
        CloseableHttpClient hp = createSSLClientDefault();
        HttpPost httpPost = new HttpPost(url);
        httpPost.setHeader("Content-Type", "application/json");
        httpPost.setEntity(new StringEntity(json));
        CloseableHttpResponse response = hp.execute(httpPost);
        HttpEntity entity = response.getEntity();
        String content = EntityUtils.toString(entity, "UTF-8");
        hp.close();
        return content;
    }
 
 
    public static CloseableHttpClient createSSLClientDefault() throws Exception {
        //如果下面的方法证书还是不过,报错的话试试下面第二种
        /* SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy(){
        //信任所有
        public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
        return true;
        }
        }).build();
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
        return HttpClients.custom().setSSLSocketFactory(sslsf).build();*/
 
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
                SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build(),
                NoopHostnameVerifier.INSTANCE);
        return HttpClients.custom().setSSLSocketFactory(sslsf).build();
    }
}

测试代码

import com.alibaba.fastjson.JSONObject;
 
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
/**
 * @author lrx
 * @description: TODO  小程序推送
 * @date 2022/4/11 13:32
 */
public class TestXCXMain {
    public static void main(String[] args) throws Exception {
        String appid = "";  //appid
        String secret = "";  //secret 
        //登录链接获取token
        String loginUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret;
        Map<String, Object> payloadMap = JSONObject.parseObject(HttpClientUtils.httpGet(loginUrl));
        String token = null;
        if (payloadMap.containsKey("access_token")) {
            token = payloadMap.get("access_token").toString();
        }
        System.out.println("获取token" + token);
        Map<String, Object> qqMap = new HashMap<String, Object>();
        qqMap.put("touser", "openid");  //要推送的openid
        qqMap.put("template_id", "");   //信息模板id
        qqMap.put("page", "index");
        qqMap.put("miniprogram_state", "developer");
        qqMap.put("lang", "zh_CN");
        //封装信息
        Map<String, Object> dataMap = new HashMap<String, Object>();
        Map<String, String> valueMap1 = new HashMap<String, String>();
        valueMap1.put("value", "成功");
        Map<String, String> valueMap2 = new HashMap<String, String>();
        valueMap2.put("value", "成功");
        dataMap.put("thing3", valueMap1);
        dataMap.put("thing1", valueMap2);
        qqMap.put("data", dataMap);
        //发送
        Map<String, Object> payloadMapData = JSONObject.parseObject(HttpClientUtils.httpPost("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+token,JSONObject.toJSONString(qqMap)));
        if (payloadMapData.containsKey("errCode")) {
            System.out.println("返回code码:"+payloadMapData.get("errCode").toString());
        }
    }
}

5.推送结果

 到此这篇关于SpringBoot小程序推送信息的项目实践的文章就介绍到这了,更多相关SpringBoot小程序推送信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot整合Spring Data JPA过程解析

    Spring Boot整合Spring Data JPA过程解析

    这篇文章主要介绍了Spring Boot整合Spring Data JPA过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java多线程编程中synchronized关键字的基础用法讲解

    Java多线程编程中synchronized关键字的基础用法讲解

    Java的synchronized关键字用于修饰线程同步,用以线程资源共享的目的等,下面就带来简单的Java多线程编程中synchronized关键字的基础用法讲解
    2016-06-06
  • java 算法之冒泡排序实例详解

    java 算法之冒泡排序实例详解

    这篇文章主要介绍了java 算法之冒泡排序实例详解的相关资料,冒泡排序,就是模仿泡泡从水中浮起跑到水面的过程需要的朋友可以参考下
    2017-07-07
  • Java反射机制及Method.invoke详解

    Java反射机制及Method.invoke详解

    这篇文章主要介绍了Java反射机制及Method.invoke详解,本文讲解了JAVA反射机制、得到某个对象的属性、得到某个类的静态属性、执行某对象的方法、执行某个类的静态方法等内容,需要的朋友可以参考下
    2015-03-03
  • IDEA 去除 mybatis.xml 文件黄色警告的图文教程

    IDEA 去除 mybatis.xml 文件黄色警告的图文教程

    这篇文章主要介绍了IDEA 去除 mybatis.xml 文件黄色警告的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • SpringBoot如何用java生成静态html

    SpringBoot如何用java生成静态html

    这篇文章主要介绍了SpringBoot如何用java生成静态html,文章围绕主题展开详细的内容介绍,需要的朋友可以参考一下
    2022-06-06
  • Java数据结构之链表详解

    Java数据结构之链表详解

    本篇文章我们将讲解一种新型的数据结构—链表,链表是一种使用广泛的通用数据结构,它可以用来作为实现栈,队列等数据结构的基础.文中有非常详细的介绍,需要的朋友可以参考下
    2021-05-05
  • Spring Boot LocalDateTime格式化处理的示例详解

    Spring Boot LocalDateTime格式化处理的示例详解

    这篇文章主要介绍了Spring Boot LocalDateTime格式化处理的示例详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • java实现顺序结构线性列表的函数代码

    java实现顺序结构线性列表的函数代码

    java实现顺序结构线性列表的函数代码。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • SpringBoot后端接收数组对象的实现

    SpringBoot后端接收数组对象的实现

    这篇文章主要介绍了SpringBoot后端接收数组对象的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论