消息基類BaseMessage的實體類定義如下所示,它對日期構造了一個整形數值,並具備了一些常規的屬性,並且還有一個重要的ToXML方法,用來給方法傳遞這些XML數據的。 復制代碼 /// <summary> /// 基礎消息內容 /// </summary> [XmlRoot(ElementName = "xml")] public class BaseMessage { /// <summary> /// 初始化一些內容,如創建時間為整形, /// </summary> public BaseMessage() { this.CreateTime = DateTime.Now.DateTimeToInt(); } /// <summary> /// 開發者微信號 /// </summary> public string ToUserName { get; set; } /// <summary> /// 發送方帳號(一個OpenID) /// </summary> public string FromUserName { get; set; } /// <summary> /// 消息創建時間 (整型) /// </summary> public int CreateTime { get; set; } /// <summary> /// 消息類型 /// </summary> public string MsgType { get; set; } public virtual string ToXml() { this.CreateTime = DateTime.Now.DateTimeToInt();//重新更新 return MyXmlHelper.ObjectToXml(this); } } 復制代碼 回復的文本消息實體類代碼如下所示,我們可以看到,它繼承了很多通用的實體屬性,並且還具備了一個ToXml的通用方法,我們需要把它轉換為響應的XML的時候,就使用這個方法就可以了。 復制代碼 /// <summary> /// 回復文本消息 /// </summary> [System.Xml.Serialization.XmlRoot(ElementName = "xml")] public class ResponseText : BaseMessage { public ResponseText() { this.MsgType = ResponseMsgType.Text.ToString().ToLower(); } public ResponseText(BaseMessage info) : this() { this.FromUserName = info.ToUserName; this.ToUserName = info.FromUserName; } /// <summary> /// 內容 /// </summary> public string Content { get; set; } } 復制代碼 而圖文消息對象類ResponseNews,它包含更多的信息定義 復制代碼 /// <summary> /// 回復圖文消息 /// </summary> [System.Xml.Serialization.XmlRoot(ElementName = "xml")] public class ResponseNews : BaseMessage { public ResponseNews() { this.MsgType = ResponseMsgType.News.ToString().ToLower(); this.Articles = new List<ArticleEntity>(); } public ResponseNews(BaseMessage info) : this() { this.FromUserName = info.ToUserName; this.ToUserName = info.FromUserName; } /// <summary> /// 圖文消息個數,限制為10條以內 /// </summary> public int ArticleCount { get { return this.Articles.Count; } set { ;//增加這個步驟才出來XML內容 } } /// <summary> /// 圖文列表。 /// 多條圖文消息信息,默認第一個item為大圖,注意,如果圖文數超過10,則將會無響應 /// </summary> [System.Xml.Serialization.XmlArrayItem("item")] public List<ArticleEntity> Articles { get; set; } } 復制代碼 而其中的圖文列表集合中的對象,它也是一個實體類型,包含了一些圖文的鏈接,標題等信息,不在贅述。 2、消息的回復處理 如對於文本消息,我們可以用以下的方式進行處理。 ResponseText response = new ResponseText(info); response.Content = "抱歉,此功能暫未開通。"; result = response.ToXml(); 對於圖文消息,我們可能需要錄入更多的消息才能返回更好的效果。 注意圖文的消息,圖片的尺寸最好按照官方的標准,否則在手機上看起來不好看,官方的標准好像是寬高是(360,200)像素 復制代碼 /// <summary> /// 訂閱或者顯示公司信息 /// </summary> /// <param name="info"></param> /// <returns></returns> private string ShowCompanyInfo(BaseMessage info) { string result = ""; //使用在微信平台上的圖文信息(單圖文信息) ResponseNews response = new ResponseNews(info); ArticleEntity entity = new ArticleEntity(); entity.Title = "廣州愛奇迪軟件科技有限公司"; entity.Description = "歡迎關注廣州愛奇迪軟件--專業的單位信息化軟件和軟件開發框架提供商,我們立志於為客戶提供最好的軟件及服務。\r\n"; entity.Description += "我們是一家極富創新性的軟件科技公司,從事研究、開發並銷售最可靠的、安全易用的技術產品及優質專業的服務,幫助全球客戶和合作伙伴取得成功。\r\n......(此處省略1000字,哈哈)"; entity.PicUrl = "http://www.iqidi.com/WeixinImage/company.png"; entity.Url = "http://www.iqidi.com"; response.Articles.Add(entity); result = response.ToXml(); return result; } 復制代碼