04. /** 05. * 创建菜单 06. * 07.
* @param menu 菜单实例 08.
* @param accessToken 有效的access_token 09.
* @return 0表示成功,其他值表示失败 10. */ 11.
public static int createMenu(Menu menu, String accessToken) { 12.
int result = 0; 13. 14.
// 拼装创建菜单的url 15.
String url = menu_create_url.replace(\16.
// 将菜单对象转换成json字符串 17.
String jsonMenu = JSONObject.fromObject(menu).toString(); 18.
// 调用接口创建菜单 19.
JSONObject jsonObject = httpRequest(url, \20. 21.
if (null != jsonObject) { 22.
if (0 != jsonObject.getInt(\23.
result = jsonObject.getInt(\24.
log.error(\创建菜单失败 errcode:{} errmsg:{}\jsonObject.getString(\
jsonObject.getInt(\
25. } 26. } 27. 28.
return result; 29. }
注意:在运行以上代码时,需要将appId和appSecret换成你自己公众号的。
整个工程的结构 \\
为了保证文章的完整独立性和可读性,我是新建了一个Java Project(Java web工程也可以,没有太大关系),没有在前几篇文章所讲到的weixinCourse工程中添加代码。如果需要,读者可以自己实现将菜单创建的代码移到自己已有的工程中去。 图中所有Java文件的源代码都在文章中贴出并进行了说明,图中使用到的jar也是Java开发中通用的jar包,很容易在网上下载到。 工程中引入的jar包主要分为两类:
1)第一类是json开发工具包,用于Java对象和Json字符串之间的转换;json开发工具包一共有3个jar:ezmorph-1.0.6.jar,json-lib-2.2.3-jdk13.jar和morph-1.1.1.jar。
2)第二类是slf4j日志工具包,用于记录系统运行所产生的日志,日志可以输出到控制台或文件中。
整个工程中,唯一没有讲到的是src下的log4j.properties的配置,也把它贴出来,方便大家参考,这样才是一个完整的工程源码。log4j.properties文件的内容如下: view sourceprint? 01.
log4j.rootLogger=info,console,file 02. 03.
log4j.appender.console=org.apache.log4j.ConsoleAppender 04.
log4j.appender.console.layout=org.apache.log4j.PatternLayout 05.
log4j.appender.console.layout.ConversionPattern=[%-5p] %m%n 06. 07.
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 08.
log4j.appender.file.DatePattern='-'yyyy-MM-dd 09.
log4j.appender.file.File=./logs/weixinmpmenu.log 10.
log4j.appender.file.Append=true 11.
log4j.appender.file.layout=org.apache.log4j.PatternLayout 12.
log4j.appender.file.layout.ConversionPattern=[%-5p] %d 7c %3x - %m%n 如何响应菜单点击事件
自定义菜单的创建工作已经完成,那么该如何接收和响应菜单的点击事件呢,也就是说在公众帐号后台处理程序中,如何识别用户点击的是哪个菜单,以及做出响应。这部分内容其实在教程的第5篇各种消息的接收与响应中已经讲解清楚了。
来看一下第一篇教程weixinCourse项目中的CoreService类要怎么改写,才能接收响应菜单点击事件,该类修改后的完整代码如下: view sourceprint? 001.
package org.liufeng.course.service; 002. 003.
import java.util.Date; 004.
import java.util.Map; 005. 006.
import javax.servlet.http.HttpServletRequest; 007. 008.
import org.liufeng.course.message.resp.TextMessage; 009.
import org.liufeng.course.util.MessageUtil; 010. 011. /** 012.
* 核心服务类 013. * 014.
* @author liufeng 015.
* @date 2013-05-20
016. */ 017.
public class CoreService { 018. /** 019.
* 处理微信发来的请求 020. * 021.
* @param request 022.
* @return 023. */ 024.
public static String processRequest(HttpServletRequest request) { 025.
String respMessage = null; 026. try { 027.
// 默认返回的文本消息内容 028.
String respContent = \请求处理异常,请稍候尝试!\029. 030.
// xml请求解析 031.
Map
// 发送方帐号(open_id) 034.
String fromUserName = requestMap.get(\035.
// 公众帐号 036.
String toUserName = requestMap.get(\037.
// 消息类型
相关推荐: