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

网友投稿 598 2022-10-11

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

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

目录1.小程序推送信息列如我们去餐厅等位有预约提醒,剩余桌数2.申请小程序信息,申请信息模板3.根据开发文档开发4.代码如下:5.推送结果

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(MWsufr"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();

retMWsufrurn 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

qqMaphttp://.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.推送结果

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:VS中C++的包含目录、附加包含目录和库目录和附加库目录的区别
下一篇:全栈点餐小程序(单店版,包含支付,后台)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~