public static WXMsg ParseWXMsgFromBodyString(string body) { WXMsg msg = new WXMsg(); var doc = new XmlDocument(); doc.LoadXml(body); var toUserName = doc.SelectSingleNode("/xml/ToUserName").InnerText; var fromUserName = doc.SelectSingleNode("/xml/FromUserName").InnerText; var createTime = int.Parse(doc.SelectSingleNode("/xml/CreateTime").InnerText); var msgTypeString = doc.SelectSingleNode("/xml/MsgType").InnerText; msg.ToUserName = toUserName; msg.FromUserName = fromUserName; msg.CreateTime = createTime; switch (msgTypeString) { case "event": msg.MsgType = WXMsgType.Event; msg.Event = doc.SelectSingleNode("/xml/Event").InnerText; msg.EventKey = doc.SelectSingleNode("/xml/EventKey").InnerText; break; case "text": msg.MsgType = WXMsgType.Text; msg.Content = doc.SelectSingleNode("/xml/Content").InnerText; msg.MsgId = doc.SelectSingleNode("/xml/MsgId").InnerText; break; default: msg.MsgType = WXMsgType.Unknown; break; } return(msg); }
public static string ConstructWXTextMessage(WXMsg msg, string replyText) { var createTime = Math.Round((DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1)).TotalSeconds); string xml = $"<xml><ToUserName><![CDATA[{msg.FromUserName}]]></ToUserName><FromUserName><![CDATA[{msg.ToUserName}]]></FromUserName><CreateTime>{createTime}</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{replyText}]]></Content></xml>"; return(xml); }
public static string ConstructWXNewsMessage(WXMsg msg, WXMultipleNewsMessage newsMessages) { var itemString = ""; for (int i = 0; i < newsMessages.ArticleCount; i++) { itemString += $"<item><Title><![CDATA[{newsMessages.NewsMessages[i].Title}]]></Title> <Description><![CDATA[{newsMessages.NewsMessages[i].Description}]]></Description><PicUrl><![CDATA[{newsMessages.NewsMessages[i].PicUrl}]]></PicUrl><Url><![CDATA[{newsMessages.NewsMessages[i].Url}]]></Url></item>"; } var createTime = Math.Round((DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1)).TotalSeconds); string xml = $"<xml><ToUserName><![CDATA[{msg.FromUserName}]]></ToUserName><FromUserName><![CDATA[{msg.ToUserName}]]></FromUserName><CreateTime>{createTime }</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>{newsMessages.ArticleCount}</ArticleCount><Articles>{itemString}</Articles></xml>"; return(xml); }