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("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小程序推送信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?

