公众号自定义菜单创建java_微信公众平台自定义菜单创建 -JAVA

微信公众平台开发之自定义菜单创建JAVA源码

创建项目添加httpclient.jar、fastjson.jar支持

自定义菜单的问题总结:

1.自定义菜单只有服务号可以申请,订阅号暂时无法申请(继续观望微信的开放政策)

2.菜单响应回复方式可以是【图文】、【音乐】、【文本】三种方式

3.自定义菜单创建之后无法立即生效,可以采用先取消关注,再关注的方式查看效果

package com.using.weixin.common.https;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.conn.ClientConnectionManager;

import org.apache.http.conn.scheme.Scheme;

import org.apache.http.conn.scheme.SchemeRegistry;

import org.apache.http.impl.client.DefaultHttpClient;

public class HttpClientConnectionManager {

/**

* 获取SSL验证的HttpClient

* @param httpClient

* @return

*/

public static HttpClient getSSLInstance(HttpClient httpClient){

ClientConnectionManager ccm = httpClient.getConnectionManager();

SchemeRegistry sr = ccm.getSchemeRegistry();

sr.register(new Scheme("https", MySSLSocketFactory.getInstance(), 443));

httpClient = new DefaultHttpClient(ccm, httpClient.getParams());

return httpClient;

}

/**

* 模拟浏览器post提交

*

* @param url

* @return

*/

public static HttpPost getPostMethod(String url) {

HttpPost pmethod = new HttpPost(url); // 设置响应头信息

pmethod.addHeader("Connection", "keep-alive");

pmethod.addHeader("Accept", "*/*");

pmethod.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

pmethod.addHeader("Host", "mp.weixin.qq.com");

pmethod.addHeader("X-Requested-With", "XMLHttpRequest");

pmethod.addHeader("Cache-Control", "max-age=0");

pmethod.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ");

return pmethod;

}

/**

* 模拟浏览器GET提交

* @param url

* @return

*/

public static HttpGet getGetMethod(String url) {

HttpGet pmethod = new HttpGet(url);

// 设置响应头信息

pmethod.addHeader("Connection", "keep-alive");

pmethod.addHeader("Cache-Control", "max-age=0");

pmethod.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ");

pmethod.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/;q=0.8");

return pmethod;

}

}

package com.using.weixin.common.https;

import java.security.KeyManagementException;

import java.security.NoSuchAlgorithmException;

import javax.net.ssl.SSLContext;

import javax.net.ssl.TrustManager;

import org.apache.http.conn.ssl.SSLSocketFactory;

public class MySSLSocketFactory extends SSLSocketFactory{

static{

mySSLSocketFactory = new MySSLSocketFactory(createSContext());

}

private static MySSLSocketFactory mySSLSocketFactory = null;

private static SSLContext createSContext(){

SSLContext sslcontext = null;

try {

sslcontext = SSLContext.getInstance("SSL");

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

try {

sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, null);

} catch (KeyManagementException e) {

e.printStackTrace();

return null;

}

return sslcontext;

}

private MySSLSocketFactory(SSLContext sslContext) {

super(sslContext);

this.setHostnameVerifier(ALLOW_ALL_HOSTNAME_VERIFIER);

}

public static MySSLSocketFactory getInstance(){

if(mySSLSocketFactory != null){

return mySSLSocketFactory;

}else{

return mySSLSocketFactory = new MySSLSocketFactory(createSContext());

}

}

}

package com.using.weixin.common.https;

import java.security.cert.CertificateException;

import java.security.cert.X509Certificate;

import javax.net.ssl.X509TrustManager;

/**

*

* @author Administrator

*

*/

public class TrustAnyTrustManager implements X509TrustManager{

@Override

public void checkClientTrusted(X509Certificate[] chain, String authType)

throws CertificateException {

}

@Override

public void checkServerTrusted(X509Certificate[] chain, String authType)

throws CertificateException {

}

@Override

public X509Certificate[] getAcceptedIssuers() {

return null;

}

}

package com.using.weixin.common;

import org.apache.http.HttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.entity.StringEntity;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import com.using.weixin.common.https.HttpClientConnectionManager;

/**

* 微信自定义菜单创建

*/

public class WxMenuUtils {

// http客户端

public static DefaultHttpClient httpclient;

static {

httpclient = new DefaultHttpClient();

httpclient = (DefaultHttpClient) HttpClientConnectionManager.getSSLInstance(httpclient); // 接受任何证书的浏览器客户端

}

public static void main(String[] args) {

try {

// 获取accessToken -参数appid,secret

String accessToken = getAccessToken("appid", "secret");

System.out.println(accessToken);

// 创建菜单

//String s = "{\"button\":[{\"name\":\"休闲娱乐\",\"sub_button\":[{\"type\":\"click\",\"name\":\"笑话大全\",\"key\":\"m_joke\"},{\"type\":\"click\",\"name\":\"内涵段子\",\"key\":\"m_duanzi\"},{\"type\":\"click\",\"name\":\"爆笑图片\",\"key\":\"m_laughImg\"}]},{\"name\":\"实用工具\",\"sub_button\":[{\"type\":\"click\",\"name\":\"天气查询\",\"key\":\"m_weather\"},{\"type\":\"click\",\"name\":\"公交查询\",\"key\":\"m_bus\"}]},{\"type\":\"click\",\"name\":\"关于企特\",\"key\":\"m_about\"}]}";

String s = "{\"button\":[{\"name\":\"休闲娱乐\",\"sub_button\":[{\"type\":\"click\",\"name\":\"笑话大全\",\"key\":\"m_joke\"},{\"type\":\"click\",\"name\":\"内涵段子\",\"key\":\"m_duanzi\"},{\"type\":\"click\",\"name\":\"爆笑图片\",\"key\":\"m_laughImg\"}]},{\"name\":\"实用工具\",\"sub_button\":[{\"type\":\"click\",\"name\":\"天气查询\",\"key\":\"m_weather\"},{\"type\":\"click\",\"name\":\"公交查询\",\"key\":\"m_bus\"},{\"type\":\"click\",\"name\":\"功能菜单\",\"key\":\"m_sysmenu\"}]},{\"name\":\"消息示例\",\"sub_button\":[{\"type\":\"click\",\"name\":\"关于企特\",\"key\":\"m_about\"},{\"type\":\"click\",\"name\":\"图文消息\",\"key\":\"m_imgmsg\"},{\"type\":\"click\",\"name\":\"音乐消息\",\"key\":\"m_musicmsg\"}]}]}";

String res = createMenu(s, accessToken);

System.out.println(res);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 创建菜单

*/

public static String createMenu(String params, String accessToken) throws Exception {

HttpPost httpost = HttpClientConnectionManager.getPostMethod("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + accessToken);

httpost.setEntity(new StringEntity(params, "UTF-8"));

HttpResponse response = httpclient.execute(httpost);

String jsonStr = EntityUtils.toString(response.getEntity(), "utf-8");

System.out.println(jsonStr);

JSONObject object = JSON.parseObject(jsonStr);

return object.getString("errmsg");

}

/**

* 获取accessToken

*/

public static String getAccessToken(String appid, String secret) throws Exception {

HttpGet get = HttpClientConnectionManager.getGetMethod("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret);

HttpResponse response = httpclient.execute(get);

String jsonStr = EntityUtils.toString(response.getEntity(), "utf-8");

JSONObject object = JSON.parseObject(jsonStr);

return object.getString("access_token");

}

/**

* 查询菜单

*/

public static String getMenuInfo(String accessToken) throws Exception {

HttpGet get = HttpClientConnectionManager.getGetMethod("https://api.weixin.qq.com/cgi-bin/menu/get?access_token=" + accessToken);

HttpResponse response = httpclient.execute(get);

String jsonStr = EntityUtils.toString(response.getEntity(), "utf-8");

return jsonStr;

}

/**

* 删除自定义菜单

*/

public static String deleteMenu(String accessToken) throws Exception {

HttpGet get = HttpClientConnectionManager.getGetMethod("https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=" + accessToken);

HttpResponse response = httpclient.execute(get);

String jsonStr = EntityUtils.toString(response.getEntity(), "utf-8");

JSONObject object = JSON.parseObject(jsonStr);

return object.getString("errmsg");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值