微信公众号平台api之验证、接收文本消息和自动回复文本消息

 

微信公众号平台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");
	}
%>

 

你可能感兴趣的:(微信公众号)