您的位置:首页 > 移动开发 > 微信开发

java 微信自动回复功能开发

2016-10-28 11:41 471 查看
java 微信自动回复功能开发
准备文件:

JCE无限制权限策略文件,里面是对应jdk6和7的文件

官网下载地址是http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html和http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html 

下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。 

如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security下覆盖原来文件,记得先备份。 

如果安装了JDK,将两个jar文件也放到%JDK_HOME%\jre\lib\security下。 

一、开发平台

myeclipse 9 ,mysql 5.6 ,微信认证服务号。

利用servlet技术开发微信自动回复功能。

本人利用ant123映射,利用ant提供的二级域名,搭建本地开发平台进行开发。

二、公众号设置:



三、开发步骤

1、编写servlet类,利用myeclipse 生成一个servlet类

  处理servlet类中的doget方法:



 处理servlet类中的dopost方法:



2、编写service类



2、编写CoreService类

/**
* 处理微信发来的请求

* @param request
* @return
*/
public static String handleMessage(Map<String, String> requestMap)throws Exception{
String respContent="";
try {
// 发送方帐号(open_id)
String fromUserName = requestMap.get("FromUserName");
// 公众帐号
String toUserName = requestMap.get("ToUserName");
// 消息类型
String msgType = requestMap.get("MsgType");

TextMessage tm =new TextMessage();
tm.setToUserName(fromUserName);
tm.setFromUserName(toUserName);
tm.setCreateTime(new Date().getTime());
tm.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
// 文本消息
if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
String content = requestMap.get("Content");
if (content.startsWith("人工客服")) {

} else {
respContent = "您发送的是文本消息!";
}
}
// 图片消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {
respContent = "您发送的是图片消息!";
}
// 地理位置消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {
respContent = "您发送的是地理位置消息!";
}
// 链接消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {
respContent = "您发送的是链接消息!";
}
// 音频消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {
respContent = "您发送的是音频消息!";
}
// 事件推送
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
// 事件类型
String eventType = requestMap.get("Event");
// 订阅
if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
String ticket = requestMap.get("Ticket");
if (ticket != null && !"".equals(ticket)) {
respContent = "谢谢您的关注!,你的ticket是:" + ticket;
} else {
respContent = "谢谢您的关注!";
}

}
// 取消订阅
else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
// TODO 取消订阅后用户再收不到公众号发送的消息,因此不需要回复消息
}
// 自定义菜单点击事件
else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
// TODO 自定义菜单权没有开放,暂不处理该类消息
String eventKey = requestMap.get("EventKey");
if ("language".equalsIgnoreCase(eventKey.trim())) {

}
} else if (eventType.equals("SCAN")) {
String eventKey = requestMap.get("EventKey");
String ticket = requestMap.get("Ticket");
respContent = "你的ticket是:" + ticket;
}
}
tm.setContent(respContent);
return MessageUtil.textMessageToXml(tm); 
} catch (Exception e) {
e.printStackTrace();
}
return "";
}

四、说明

经过以上编号代码步骤,及处理jdk的JCR无限制权限策略方法后,

支持微信的明文模式和安全模式。

五、总结

本人利用时间开发java的微信自动回复功能,已取得满意的结果。

下一步将在此代码的基础上,配合功能,完善系统。

如有和我一样想学习的同仁,可与我联系,QQ22832054。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: