老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

微信公眾平臺開發中使用Java如何實現一個消息回復功能

本篇文章給大家分享的是有關微信公眾平臺開發中使用Java如何實現一個消息回復功能,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創新互聯是一家集網站建設,衡南企業網站建設,衡南品牌網站建設,網站定制,衡南網站建設報價,網絡營銷,網絡優化,衡南網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。

(一)回復文本消息

在前面我們已經完成了對消息的分類和回復消息實體的建立,這里回復文本消息需要用到的就是我們的TextMessage,我們把回復文本消息在【文本消息】類型中給出回復!在我們做消息回復的時候需要設置消息的接收人ToUserName(openid)、消息的發送方FromUserName、消息類型MsgType、創建時間CreateTime以及消息體Content,由于我們我們的消息回復格式是需要為xml,所以最終我們需要將其裝換成xml再做返回輸出!

首先我們在工具類MessageUtil的代碼做出部分修改和添加,實現最后版本為:

package com.cuiyongzhi.wechat.util;
 
import java.io.InputStream;
import java.io.Writer;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.dom4j.D ocument;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
 
import com.cuiyongzhi.wechat.message.resp.Article;
import com.cuiyongzhi.wechat.message.resp.ImageMessage;
import com.cuiyongzhi.wechat.message.resp.MusicMessage;
import com.cuiyongzhi.wechat.message.resp.NewsMessage;
import com.cuiyongzhi.wechat.message.resp.TextMessage;
import com.cuiyongzhi.wechat.message.resp.VideoMessage;
import com.cuiyongzhi.wechat.message.resp.VoiceMessage;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.core.util.QuickWriter;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
import com.thoughtworks.xstream.io.xml.XppDriver;
 
/**
 * ClassName: MessageUtil
 * 
 * @Description: 消息工具類
 * @author dapengniao
 * @date 2016年3月7日 上午10:05:04
 */
public class MessageUtil {
 
 /**
  * 返回消息類型:文本
  */
 public static final String RESP_MESSAGE_TYPE_TEXT = "text";
 
 /**
  * 返回消息類型:音樂
  */
 public static final String RESP_MESSAGE_TYPE_MUSIC = "music";
 
 /**
  * 返回消息類型:圖文
  */
 public static final String RESP_MESSAGE_TYPE_NEWS = "news";
 
 /**
  * 返回消息類型:圖片
  */
 public static final String RESP_MESSAGE_TYPE_Image = "image";
 
 /**
  * 返回消息類型:語音
  */
 public static final String RESP_MESSAGE_TYPE_Voice = "voice";
 
 /**
  * 返回消息類型:視頻
  */
 public static final String RESP_MESSAGE_TYPE_Video = "video";
 
 /**
  * 請求消息類型:文本
  */
 public static final String REQ_MESSAGE_TYPE_TEXT = "text";
 
 /**
  * 請求消息類型:圖片
  */
 public static final String REQ_MESSAGE_TYPE_IMAGE = "image";
 
 /**
  * 請求消息類型:鏈接
  */
 public static final String REQ_MESSAGE_TYPE_LINK = "link";
 
 /**
  * 請求消息類型:地理位置
  */
 public static final String REQ_MESSAGE_TYPE_LOCATION = "location";
 
 /**
  * 請求消息類型:音頻
  */
 public static final String REQ_MESSAGE_TYPE_VOICE = "voice";
 
 /**
  * 請求消息類型:視頻
  */
 public static final String REQ_MESSAGE_TYPE_VIDEO = "video";
 
 /**
  * 請求消息類型:推送
  */
 public static final String REQ_MESSAGE_TYPE_EVENT = "event";
 
 /**
  * 事件類型:subscribe(訂閱)
  */
 public static final String EVENT_TYPE_SUBSCRIBE = "subscribe";
 
 /**
  * 事件類型:unsubscribe(取消訂閱)
  */
 public static final String EVENT_TYPE_UNSUBSCRIBE = "unsubscribe";
 
 /**
  * 事件類型:CLICK(自定義菜單點擊事件)
  */
 public static final String EVENT_TYPE_CLICK = "CLICK";
 
 /**
  * 事件類型:VIEW(自定義菜單URl視圖)
  */
 public static final String EVENT_TYPE_VIEW = "VIEW";
 
 /**
  * 事件類型:LOCATION(上報地理位置事件)
  */
 public static final String EVENT_TYPE_LOCATION = "LOCATION";
 
 /**
  * 事件類型:LOCATION(上報地理位置事件)
  */
 public static final String EVENT_TYPE_SCAN = "SCAN";
 
 /**
  * @Description: 解析微信發來的請求(XML)
  * @param @param request
  * @param @return
  * @param @throws Exception
  * @author dapengniao
  * @date 2016年3月7日 上午10:04:02
  */
 @SuppressWarnings("unchecked")
 public static Map parseXml(HttpServletRequest request)
   throws Exception {
  // 將解析結果存儲在HashMap中
  Map map = new HashMap();
  // 從request中取得輸入流
  InputStream inputStream = request.getInputStream();
  // 讀取輸入流
  SAXReader reader = new SAXReader();
  Document document = reader.read(inputStream);
  // 得到xml根元素
  Element root = document.getRootElement();
  // 得到根元素的所有子節點
  List elementList = root.elements();
 
  // 遍歷所有子節點
  for (Element e : elementList)
   map.put(e.getName(), e.getText());
 
  // 釋放資源
  inputStream.close();
  inputStream = null;
 
  return map;
 }
 
 /**
  * @Description: 文本消息對象轉換成xml
  * @param @param textMessage
  * @param @return
  * @author dapengniao
  * @date 2016年3月8日 下午4:13:22
  */
 public static String textMessageToXml(TextMessage textMessage) {
  xstream.alias("xml", textMessage.getClass());
  return xstream.toXML(textMessage);
 }
 
 /**
  * @Description: 圖文消息對象轉換成xml
  * @param @param newsMessage
  * @param @return
  * @author dapengniao
  * @date 2016年3月8日 下午4:14:09
  */
 public static String newsMessageToXml(NewsMessage newsMessage) {
  xstream.alias("xml", newsMessage.getClass());
  xstream.alias("item", new Article().getClass());
  return xstream.toXML(newsMessage);
 }
 
 /**
  * @Description: 圖片消息對象轉換成xml
  * @param @param imageMessage
  * @param @return
  * @author dapengniao
  * @date 2016年3月9日 上午9:25:51
  */
 public static String imageMessageToXml(ImageMessage imageMessage) {
  xstream.alias("xml", imageMessage.getClass());
  return xstream.toXML(imageMessage);
 }
 
 /**
  * @Description: 語音消息對象轉換成xml
  * @param @param voiceMessage
  * @param @return
  * @author dapengniao
  * @date 2016年3月9日 上午9:27:26
  */
 public static String voiceMessageToXml(VoiceMessage voiceMessage) {
  xstream.alias("xml", voiceMessage.getClass());
  return xstream.toXML(voiceMessage);
 }
 
 /**
  * @Description: 視頻消息對象轉換成xml
  * @param @param videoMessage
  * @param @return
  * @author dapengniao
  * @date 2016年3月9日 上午9:31:09
  */
 public static String videoMessageToXml(VideoMessage videoMessage) {
  xstream.alias("xml", videoMessage.getClass());
  return xstream.toXML(videoMessage);
 }
 
 /**
  * @Description: 音樂消息對象轉換成xml
  * @param @param musicMessage
  * @param @return
  * @author dapengniao
  * @date 2016年3月8日 下午4:13:36
  */
 public static String musicMessageToXml(MusicMessage musicMessage) {
  xstream.alias("xml", musicMessage.getClass());
  return xstream.toXML(musicMessage);
 }
 
 /**
  * 對象到xml的處理
  */
 private static XStream xstream = new XStream(new XppDriver() {
  public HierarchicalStreamWriter createWriter(Writer out) {
   return new PrettyPrintWriter(out) {
    // 對所有xml節點的轉換都增加CDATA標記
    boolean cdata = true;
 
    @SuppressWarnings("rawtypes")
    public void startNode(String name, Class clazz) {
     super.startNode(name, clazz);
    }
 
    protected void writeText(QuickWriter writer, String text) {
     if (cdata) {
      writer.write("");
     } else {
      writer.write(text);
     }
    }
   };
  }
 });
}

我們回復文本消息的簡單實現:修改MsgDispatcher,在消息分類為【文本消息】中加入如下代碼:

String openid=map.get("FromUserName"); //用戶openid
String mpid=map.get("ToUserName"); //公眾號原始ID
   
//普通文本消息
TextMessage txtmsg=new TextMessage();
txtmsg.setToUserName(openid);
txtmsg.setFromUserName(mpid);
txtmsg.setCreateTime(new Date().getTime());
txtmsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
   
if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) { // 文本消息
 txtmsg.setContent("你好,這里是崔用志個人賬號!");
 return MessageUtil.textMessageToXml(txtmsg);
}

啟動項目,當我們發送任何文本消息后我們可以看到我們的回復內容,如圖:

微信公眾平臺開發中使用Java如何實現一個消息回復功能

(二)圖文消息回復

圖文消息的回復和文本消息的實現模式是一樣的,只不過對應消息體的字段有所區別而已,這里為了和文本消息能有所區分我在【圖片消息】實現圖文消息的回復,修改MsgDispatcher:

//對圖文消息
NewsMessage newmsg=new NewsMessage();
newmsg.setToUserName(openid);
newmsg.setFromUserName(mpid);
newmsg.setCreateTime(new Date().getTime());
newmsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);
   
if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) { // 圖片消息
 System.out.println("==============這是圖片消息!");
 Article article=new Article();
 article.setDescription("這是圖文消息1"); //圖文消息的描述
 article.setPicUrl("http://res.cuiyongzhi.com/2016/03/201603086749_6850.png"); //圖文消息圖片地址
 article.setTitle("圖文消息1"); //圖文消息標題
 article.setUrl("http://www.cuiyongzhi.com"); //圖文url鏈接
 List
list=new ArrayList
(); list.add(article); //這里發送的是單圖文,如果需要發送多圖文則在這里list中加入多個Article即可! newmsg.setArticleCount(list.size()); newmsg.setArticles(list); return MessageUtil.newsMessageToXml(newmsg); }

實現結果如下圖所示:

微信公眾平臺開發中使用Java如何實現一個消息回復功能

在整個的譜圖消息發送的過程中沒有任何項目結構的變化,只是對文件內容作了簡單代碼增加和修改,下一篇將講述【微信開發中的token生成】以方便后面多媒體消息發送的講解,感謝你的查閱,如有疑問獲需源碼可留言!

以上就是微信公眾平臺開發中使用Java如何實現一個消息回復功能,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創新互聯行業資訊頻道。


本文標題:微信公眾平臺開發中使用Java如何實現一個消息回復功能
文章轉載:http://www.xueling.net.cn/article/jccich.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 午夜无码人妻AV大片色欲 | 日本一区二区福利视频 | 黄色大片免费的 | 久久精品国产人伦 | 日韩人妻一区二区三区蜜桃视频 | 免费视频wwwxx | 四虎精品成人影院在线观看 | 中文字幕一区二区在线观看 | 免费特黄夫妻录像影片 | 无码粉嫩虎白一线天在线观看 | avav片在线看 | 制服丝袜国产AV无码 | 夜夜躁狠狠躁夜躁2021 | 亚洲国产精品无码久久久高潮 | 亚洲成A人V欧美综合天堂麻豆 | 大尺度吃奶摸下激烈视频 | 亚洲国产精品一二三区 | 亚洲一区在线免费观看 | 妹妹说有我这种哥哥真不幸短剧在线观看 | 国产精品二区一区二区aⅴ污介绍 | 中文字幕二区在线 | 国产在线一区二区三区激情欧美 | 成人一区二区三区四区 | 亚洲欧美a | 99热操| 美女让男人桶爽免费视频 | 久久久999久久久 | 国产欧美一区二区三区视频在线观看 | 人妻少妇精品视中文字幕国语 | 国产精品午夜福利在线观看地址 | 99re国产精品 | 亚洲av中文无码4区免费 | 人间精品视频在线播放 | 国产人澡人澡澡澡人碰视频 | 日韩一区精品视频一区二区 | 中国浓毛少妇毛茸茸 | 偿还的影视高清在线观看 | 欧美一级特黄aaaaaaa色戒 | 99热亚洲 | 国产又粗又爽的视频 | 97porm国内自拍视频 |