国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java 微信接入 關注和取消關注

2019-11-06 07:40:25
字體:
來源:轉載
供稿:網友
//最基礎的servlet 進行接收
package com.cq.wechat;import java.io.IOException;import java.io.PRintWriter;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.dom4j.io.SAXReader;import java.io.InputStream;import java.util.HashMap;import java.util.Map;import org.dom4j.Document;import org.dom4j.Element;/** * Servlet implementation class weChat */@WebServlet("/weChat")public class weChat extends HttpServlet {	private static final long serialVersionUID = 1L;	private String jsonString; // 用于存放json數據	/**	 * Default constructor.	 */	public weChat() {		// TODO Auto-generated constructor stub	}	/**	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse	 *      response)	 */	protected void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		System.out.print("------------------------------------");		String echostr=""; 		echostr = request.getParameter("echostr");        //驗證消息是否來自微信,是的話,把該字符串返回給微信		if (echostr!=null) {			valid(request);			PrintWriter out = response.getWriter();			out.println(jsonString);			out.close();			System.out.print(jsonString);		}        	   //接受微信的推送(關注和取消關注等)		try {		    //解析微信返回的xml			Map<String, String> map = parseXml(request);			//測試查看返回的消息			System.out.println(map.size());			 for (String key : map.keySet()) {				   System.out.println("key= "+ key + " and value= " + map.get(key));			}				} catch (Exception e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}	/**	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse	 *      response)	 */	protected void doPost(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		doGet(request, response);	}    /**     * 驗證微信消息     * @param request     */	public void valid(HttpServletRequest request) {		String encryptStr = "";		List<String> list = new ArrayList<String>();		list.add(request.getParameter("nonce"));		list.add(request.getParameter("timestamp"));		list.add("cqtoken");//自己的token		Collections.sort(list, new SpellComparator());		for (String s : list) {			encryptStr += s;		}		String encrypt = SHA1.hex_sha1(encryptStr);		if (encrypt.equals(request.getParameter("signature"))) {			jsonString = request.getParameter("echostr");		}	}	/**	 * 漢字拼音排序比較器	 */	@SuppressWarnings("rawtypes")	class SpellComparator implements Comparator {		public int compare(Object o1, Object o2) {			try {				// 取得比較對象的漢字編碼,并將其轉換成字符串				String s1 = new String(o1.toString().getBytes("GB2312"), "UTF-8");				String s2 = new String(o2.toString().getBytes("GB2312"), "UTF-8");				// 運用String類的 compareTo()方法對兩對象進行比較				return s1.compareTo(s2);			} catch (Exception e) {				e.printStackTrace();			}			return 0;		}	}	/**	 * 	 * 解析微信發來的請求(XML)	 * 	 * 	 * 	 * @param request	 * 	 * @return	 * 	 * @throws Exception	 * 	 */	public Map<String, String> parseXml(HttpServletRequest request) throws Exception {		// 將解析結果存儲在HashMap中		Map<String, String> map = new HashMap<String, String>();		// 從request中取得輸入流		InputStream inputStream = request.getInputStream();		// 讀取輸入流		SAXReader reader = new SAXReader();		Document document = reader.read(inputStream);		String requestXml = document.asXML();		String subXml = requestXml.split(">")[0] + ">";		requestXml = requestXml.substring(subXml.length());		// 得到xml根元素		Element root = document.getRootElement();		// 得到根元素的全部子節點		List<Element> elementList = root.elements();		// 遍歷全部子節點		for (Element e : elementList) {			map.put(e.getName(), e.getText());		}		map.put("requestXml", requestXml);		// 釋放資源		inputStream.close();		inputStream = null;		return map;	}}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尼玛县| 光山县| 晋城| 梁山县| 安义县| 海阳市| 安福县| 枣庄市| 米易县| 无棣县| 黄冈市| 永城市| 兖州市| 鄂州市| 常宁市| 乌什县| 化德县| 永和县| 康平县| 泾川县| 红原县| 平果县| 鄂托克前旗| 资溪县| 蓝田县| 泸溪县| 武鸣县| 抚远县| 富平县| 山丹县| 西乌| 叶城县| 洛扎县| 阆中市| 攀枝花市| 皮山县| 池州市| 海门市| 额敏县| 韩城市| 八宿县|