千家信息网

SpringBoot小程序推送信息怎么实现

发表于:2024-10-18 作者:千家信息网编辑
千家信息网最后更新 2024年10月18日,这篇文章主要介绍了SpringBoot小程序推送信息怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot小程序推送信息怎么实现文章都会有所收获,下面
千家信息网最后更新 2024年10月18日SpringBoot小程序推送信息怎么实现

这篇文章主要介绍了SpringBoot小程序推送信息怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot小程序推送信息怎么实现文章都会有所收获,下面我们一起来看看吧。

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

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

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

appid

AppSecret

3.根据开发文档开发

subscribeMessage.send | 微信开放文档

4.代码如下:

引入依赖

         org.apache.httpcomponents        httpclient        4.5.2    

先准备一个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 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 qqMap = new HashMap();        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 dataMap = new HashMap();        Map valueMap1 = new HashMap();        valueMap1.put("value", "成功");        Map valueMap2 = new HashMap();        valueMap2.put("value", "成功");        dataMap.put("thing3", valueMap1);        dataMap.put("thing1", valueMap2);        qqMap.put("data", dataMap);        //发送        Map 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小程序推送信息怎么实现"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

0