这篇文章主要介绍了SpringBoot小程序推送信息怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot小程序推送信息怎么实现文章都会有所收获,下面我们一起来看看吧。
首先申请一个小程序,微信开放平台:小程序
appid
AppSecret
subscribeMessage.send | 微信开放文档
引入依赖
<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()); } } }
关于“SpringBoot小程序推送信息怎么实现”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SpringBoot小程序推送信息怎么实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。