微信公众号平台api之验证、接收文本消息和自动回复文本消息
<%@ page contentType="text/html;charset=UTF-8"%> <%@ page import="java.util.*"%> <%@ page import="java.security.*"%> <%@ page import="java.io.*"%> <%@ page import="org.w3c.dom.*"%> <%@ page import="javax.xml.parsers.*"%> <% Enumeration parameterNames = request.getParameterNames(); String parameterName = null; String parameterValue = null; while (parameterNames.hasMoreElements()) { parameterName = (String) parameterNames.nextElement(); parameterValue = request.getParameter(parameterName); System.out.println("weixin_test-param:"+parameterName+"="+parameterValue); } String TOKEN = "这里填写您设置的TOKEN值"; String echostr = request.getParameter("echostr"); String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); System.out.println("weixin_test:echostr="+echostr+",signature="+signature+",timestamp="+timestamp+",nonce="+nonce); List values = new ArrayList(); values.add(TOKEN); values.add(timestamp); values.add(nonce); Collections.sort(values); StringBuffer content = new StringBuffer(); for (int i = 0; i < values.size(); i++) { content.append(values.get(i)); } MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] b = md.digest(content.toString().getBytes("UTF-8")); String stmp = ""; StringBuffer signInfo = new StringBuffer(); for (int n = 0; n < b.length; n++) { stmp = Integer.toHexString(b[n] & 0XFF); if (stmp.length() == 1){ signInfo.append("0"); signInfo.append(stmp); }else{ signInfo.append(stmp); } } System.out.println("weixin_test:signInfo="+signInfo+",signature="+signature); if(signInfo.toString().equals(signature)){ out.clear(); out.print(echostr); System.out.println("weixin_test(001):ok"); //receive user's message from weixin platform BufferedReader br = new BufferedReader(new InputStreamReader((ServletInputStream)request.getInputStream())); String line = null; StringBuffer sb = new StringBuffer(); while((line = br.readLine())!=null){ sb.append(line); } System.out.println("weixin_message:"+sb.toString()); //recieved message :text if(sb.length()>0){ Element root=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(sb.toString().getBytes("UTF-8"))).getDocumentElement(); NodeList nodes = root.getChildNodes(); int count = nodes.getLength(); String textContent = null; String FromUserName = null; String ToUserName = null; boolean isText = false; for(int i=0;i<count;i++){ String nodeName = nodes.item(i).getNodeName(); String nodeValue = nodes.item(i).getFirstChild().getNodeValue(); if("MsgType".equals(nodeName) && "text".equals(nodeValue)){ isText = true; } if("Content".equals(nodeName)){ textContent = nodeValue; } if("FromUserName".equals(nodeName)){ FromUserName = nodeValue; } if("ToUserName".equals(nodeName)){ ToUserName = nodeValue; } } System.out.println("weixin_message:textContent="+textContent); //reply text message if(isText){ StringBuffer replyInfo = new StringBuffer(); Date d = new Date(); long CreateTime = d.getTime()/1000; replyInfo.append("<xml>"); replyInfo.append("<ToUserName>"); replyInfo.append("<![CDATA[").append(FromUserName).append("]]>"); replyInfo.append("</ToUserName>"); replyInfo.append("<FromUserName>"); replyInfo.append("<![CDATA[").append(ToUserName).append("]]>"); replyInfo.append("</FromUserName>"); replyInfo.append("<CreateTime>"); replyInfo.append(CreateTime); replyInfo.append("</CreateTime>"); replyInfo.append("<MsgType>"); replyInfo.append("<![CDATA[text]]>"); replyInfo.append("</MsgType>"); replyInfo.append("<Content>"); replyInfo.append("<![CDATA[hello,你好!]]>"); replyInfo.append("</Content>"); replyInfo.append("</xml>"); out.clear(); out.print(replyInfo.toString()); } } return; }else{ System.out.println("weixin_test:err"); } %>
相关推荐
消息接收与发送:包括接收用户发送的消息(文本、图片、语音、视频等)、验证消息真实性、回复消息(文本、图片、语音、视频、图文等)等接口。 模板消息:允许开发者向用户发送模板化的消息,适用于订单通知、服务...
一个简化版的微信公众号开发脚本示例,这个脚本将演示如何接收用户发送的消息并回复。 请注意,微信公众号开发需要你在微信公众平台注册账号并获取必要的API密钥和Token。 注意: 脚本中的WECHAT_TOKEN需要你替换成...
5. **消息处理**:掌握接收和响应用户消息的流程,包括文本、图片、语音、视频等多种消息类型,以及自定义菜单的点击事件处理。 6. **微信JSSDK**:了解JavaScript SDK的使用,实现微信内的网页分享、地理位置获取...
服务器需要监听特定的WebSocket端口,接受新的连接,并对接收到的消息进行解析和响应。在公共聊天室场景中,服务器还需要管理用户的身份验证、消息广播(将一条消息发送给所有在线用户)以及可能的安全措施,比如...
3、接收微信发送的POST消息后,由DealPost进行消息处理。其中,DealXml类里进行消息初始封装,有2个参数,一个是MsgType,进行微信发送过来的消息类型判断另外一个是xn,进行根据MsgType判断产生其他各种类的参数...
2. **消息与事件推送**:接收和发送消息,包括文本、图片、文件等类型,以及各种事件如关注、取消关注等。 3. **自定义菜单**:创建和管理企业微信的菜单,用户可以通过菜单触发相应的操作。 4. **应用管理**:创建...
在Golang中,构建微信个人号机器人,首先需要对微信提供的API有深入理解,包括获取access_token、刷新access_token、发送消息(文本、图片、语音等)、接收消息、处理事件(如关注、取消关注、菜单点击)等。...
2. **企业号API**:微信企业号提供了丰富的API接口,如发送消息(文本、图片、语音、视频等)、接收消息、管理成员、部门、标签、菜单等。开发者需要熟悉这些接口的使用方法和参数设置。 3. **消息与事件处理**:...
Java微信企业号接口测试是开发微信企业应用的重要环节,它涉及到如何通过Java编程语言与微信提供的API进行交互,实现各种功能,如发送消息、接收消息、管理用户等。在这个过程中,开发者需要熟悉微信官方提供的SDK...
要运行这个程序,你需要将`your api`替换为你的图灵API密钥,并启动`robot.start()`来监听和自动处理微信消息。`embed()`函数则确保程序不会立即退出,而是进入Python命令行模式,保持程序运行。 使用这个配置,你...
1. **获取Access Token**:通过CorpID和Secret向API发送GET请求来获取Access Token,这是一个重要的身份验证步骤。示例命令如下: ```bash curl ...
3. **消息处理**:pyWechatty 提供了消息处理机制,可以接收来自微信的文本、图片、语音、视频等各种类型的消息,并根据预设规则进行回复。开发者可以通过编写回调函数来定义不同消息类型的处理逻辑。 4. **事件...
1.3.4 “认我测”质检服务平台的设计和实现 8 1.4 本文的结构安排 8 第二章 多窗口类浏览器设计 11 2.1 多窗口类浏览器需求分析 11 2.1.1 Activity简介 11 2.1.2 Fragment简介 11 2.1.3 多窗口类浏览器需求 12 2.2 ...