/// <summary> /// 根据实体生成XML /// </summary> /// <param name="obj">实体</param> /// <returns></returns> public static string GetXmlByObj(ResponsedMsg obj) { StringBuilder sb = new StringBuilder(); sb.Append("<xml>"); sb.Append(string.Format("<{0}><![CDATA[{1}]]></{0}>", "ToUserName", obj.ToUserName)); sb.Append(string.Format("<{0}><![CDATA[{1}]]></{0}>", "FromUserName", obj.FromUserName)); sb.Append(string.Format("<{0}>{1}</{0}>", "CreateTime", obj.CreateTime)); sb.Append(string.Format("<{0}><![CDATA[{1}]]></{0}>", "MsgType", obj.MsgType)); switch (obj.MsgType.ToLower()) { case "text": sb.Append(string.Format("<Content><![CDATA[{0}]]></Content>", ((RspMsgText)obj).Content)); break; case "image": sb.Append(string.Format("<{0}><MediaId>{1}</MediaId></{0}>", ((RspMsgImage)obj).MsgType, ((RspMsgImage)obj).MediaId)); break; case "voice": sb.Append(string.Format("<{0}><MediaId>{1}</MediaId></{0}>", ((RspMsgVoice)obj).MsgType, ((RspMsgVoice)obj).MediaId)); break; case "video": sb.Append("<Video>"); foreach (System.Reflection.PropertyInfo p in ((RspMsgVideo)obj).VideoObj.GetType().GetProperties()) { sb.Append(string.Format("<{0}>{1}</{0}>", p.Name, p.GetValue(obj, null).ToString())); } sb.Append("</Video>"); break; case "news": sb.Append(string.Format("<{0}>{1}</{0}>", "ArticleCount", ((RspMsgNews)obj).ArticleCount)); sb.Append("<Articles>"); for (int i = 0; i < ((RspMsgNews)obj).ArticleList.Count; i++) { sb.Append("<item>"); sb.Append(string.Format("<{0}>{1}</{0}>", "Title", ((RspMsgNews)obj).ArticleList[i].title)); sb.Append(string.Format("<{0}>{1}</{0}>", "Description", ((RspMsgNews)obj).ArticleList[i].description)); sb.Append(string.Format("<{0}>{1}</{0}>", "PicUrl", ((RspMsgNews)obj).ArticleList[i].picurl)); sb.Append(string.Format("<{0}>{1}</{0}>", "Url", ((RspMsgNews)obj).ArticleList[i].url)); sb.Append("</item>"); } sb.Append("</Articles>"); break; } sb.Append("</xml>"); return sb.ToString(); }
/// <summary> /// 根据响应实体生成回包XML /// </summary> /// <param name="obj">响应实体</param> /// <param name="signature">签名</param> /// <param name="timestamp">时间戳</param> /// <param name="nonce">随机串</param> /// <returns></returns> public string GetRspXmlByObj(ResponsedMsg obj) { string nonce = Guid.NewGuid().ToString().Replace("-", ""); string timestamp = TimeStamp.Now().ToString(); var rspStr = ResponsedMsg.GetXmlByObj(obj); Tencent.WXBizMsgCrypt wxcpt = new Tencent.WXBizMsgCrypt(this._token, this._encodingAESKey, this._corpID); string sEncryptStr = ""; var res = wxcpt.EncryptMsg(rspStr, timestamp, nonce, ref sEncryptStr); if (res == 0) { return sEncryptStr; } return ""; }