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

首頁 > 學院 > 開發(fā)設計 > 正文

第 6 章 微信開發(fā)之各種消息的接收與響應

2019-11-15 00:40:45
字體:
來源:轉載
供稿:網(wǎng)友
第 6 章 微信開發(fā)之各種消息的接收與響應

一、在哪里接收這些消息

從微信公眾平臺接口消息指南中可以了解到,當用戶向公眾帳號發(fā)消息時,微信服務器會將消息通過POST方式提交給我們在接口配置信息中填寫的URL,而我們就需要在URL所指向的請求處理類CoreServlet的doPost方法中接收消息、處理消息和響應消息。

/**     * 處理微信服務器發(fā)來的消息     */    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {                // 微信服務器POST消息時用的是UTF-8編碼,在接收時也要用同樣的編碼,否則中文會亂碼;        request.setCharacterEncoding("UTF-8");        //在響應消息(回復消息給用戶)時,也將編碼方式設置為UTF-8,原理同上;        response.setCharacterEncoding("UTF-8");                // 調(diào)用CoreService類的PRocessRequest方法接收、處理消息,并得到處理結果;        String respMessage = CoreService.processRequest(request);                  // 調(diào)用response.getWriter().write()方法將消息的處理結果返回給用戶        PrintWriter out = response.getWriter();          out.print(respMessage);          out.close();      }

二、怎么接收和響應這些消息

package com.souvc.weixin.service;import java.util.Date;import java.util.Map;import javax.servlet.http.HttpServletRequest;import com.souvc.weixin.message.resp.TextMessage;import com.souvc.weixin.util.MessageUtil;/** *  * @ClassName: CoreService * @Description: 業(yè)務核心類 * @author: souvc * @date Jun 15, 2015 4:49:10 PM */public class CoreService {    /**     * 處理微信發(fā)來的請求     *      * @param request     * @return     */    public static String processRequest(HttpServletRequest request) {        String respMessage = null;        try {            // 默認返回的文本消息內(nèi)容            String respContent = "請求處理異常,請稍候嘗試!";            // 調(diào)用消息工具類MessageUtil解析微信發(fā)來的xml格式的消息,解析的結果放在HashMap里;            Map<String, String> requestMap = MessageUtil.parseXml(request);            // 從HashMap中取出消息中的FromUserName,ToUserName,MsgType字段;            // 發(fā)送方帳號(open_id)            String fromUserName = requestMap.get("FromUserName");            // 公眾帳號            String toUserName = requestMap.get("ToUserName");            // 消息類型            String msgType = requestMap.get("MsgType");            // 回復文本消息            TextMessage textMessage = new TextMessage();            textMessage.setToUserName(fromUserName);            textMessage.setFromUserName(toUserName);            textMessage.setCreateTime(new Date().getTime());            textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);            textMessage.setFuncFlag(0);            // 文本消息            if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {                respContent = "您發(fā)送的是文本消息!";            }            // 圖片消息            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {                respContent = "您發(fā)送的是圖片消息!";            }            // 地理位置消息            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {                respContent = "您發(fā)送的是地理位置消息!";            }            // 鏈接消息            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {                respContent = "您發(fā)送的是鏈接消息!";            }            // 音頻消息            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {                respContent = "您發(fā)送的是音頻消息!";            }            // 事件推送            else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {                // 事件類型                String eventType = requestMap.get("Event");                // 訂閱                if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {                    respContent = "謝謝您的關注!";                }                // 取消訂閱                else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {                    // TODO 取消訂閱后用戶再收不到公眾號發(fā)送的消息,因此不需要回復消息                }                // 自定義菜單點擊事件                else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {                    // TODO 自定義菜單權沒有開放,暫不處理該類消息                }            }            textMessage.setContent(respContent);            // 調(diào)用消息工具類MessageUtil將要返回的文本消息對象TextMessage轉化成xml格式的字符串;            respMessage = MessageUtil.textMessageToXml(textMessage);        } catch (Exception e) {            e.printStackTrace();        }        return respMessage;    }}

微信服務器發(fā)送過來的消息,我們服務器回應響應的消息。

完整的源碼: http://yunpan.cn/cQyvhABdhNVR9 訪問密碼 2336


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 保亭| 桦南县| 姜堰市| 城步| 定边县| 文山县| 宁安市| 拜泉县| 株洲县| 宜丰县| 宁远县| 康马县| 旺苍县| 郧西县| 拜城县| 内江市| 密山市| 永胜县| 廊坊市| 陇西县| 榆树市| 宜兰县| 芒康县| 盐亭县| 金塔县| 呼玛县| 泗阳县| 灯塔市| 莱芜市| 枞阳县| 原平市| 治多县| 佛山市| 阿巴嘎旗| 唐山市| 漳浦县| 巨野县| 漯河市| 岳池县| 沅江市| 六枝特区|