public void ConvertEntityToXmlTest() { var doc = XDocument.Parse(xml); var requestEntity = RequestMessageFactory.GetRequestEntity(doc); { //Text var responseText = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageText>(requestEntity); Assert.IsNotNull(responseText); responseText.Content = "新内容"; var responseDoc = EntityHelper.ConvertEntityToXml(responseText); Console.WriteLine(responseDoc.ToString()); Assert.AreEqual("新内容", responseDoc.Root.Element("Content").Value); } { //News var responseNews = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageNews>(requestEntity); Assert.IsNotNull(responseNews); responseNews.Articles.Add(new Article() { Description = "测试说明", Title = "测试标题", Url = "http://www.senparc.com", PicUrl = "http://img.senparc.com/images/v2/logo.jpg'" }); Assert.AreEqual(1, responseNews.ArticleCount); var responseDoc = EntityHelper.ConvertEntityToXml(responseNews); Console.WriteLine(responseDoc.ToString()); } }
public void ConvertEntityToXml_MusicTest() { var voiceTest = @"<?xml version=""1.0"" encoding=""utf-8""?> <xml> <ToUserName><![CDATA[gh_a96a4a619366]]></ToUserName> <FromUserName><![CDATA[olPjZjsXuQPJoV0HlruZkNzKc91E]]></FromUserName> <CreateTime>1361430302</CreateTime> <MsgType><![CDATA[voice]]></MsgType> <MediaId><![CDATA[X1yfgB2XI-faU6R2jmKz0X1JZmPCxIvM-9ktt4K92BB9577SCi41S-qMl60q5DJo]]></MediaId> <Format><![CDATA[amr]]></Format> <MsgId>5847298622973403529</MsgId> </xml>"; var doc = XDocument.Parse(voiceTest); var requestEntity = RequestMessageFactory.GetRequestEntity(doc) as RequestMessageVoice; Assert.IsNotNull(requestEntity); var responseMusic = ResponseMessageBase.CreateFromRequestMessage(requestEntity, ResponseMsgType.Music) as ResponseMessageMusic; Assert.IsNotNull(responseMusic); responseMusic.Music.Title = "测试Music"; responseMusic.Music.Description = "测试Music的说明"; responseMusic.Music.MusicUrl = "http://weixin.senparc.com/Content/music1.mp3"; responseMusic.Music.HQMusicUrl = "http://weixin.senparc.com/Content/music2.mp3"; var responseDoc = EntityHelper.ConvertEntityToXml(responseMusic); Console.WriteLine(responseDoc.ToString()); Assert.AreEqual(responseMusic.Music.Title, responseDoc.Root.Element("Music").Element("Title").Value); Assert.AreEqual(responseMusic.Music.Description, responseDoc.Root.Element("Music").Element("Description").Value); Assert.AreEqual(responseMusic.Music.MusicUrl, responseDoc.Root.Element("Music").Element("MusicUrl").Value); Assert.AreEqual(responseMusic.Music.HQMusicUrl, responseDoc.Root.Element("Music").Element("HQMusicUrl").Value); }
/// <summary> /// 将ResponseMessage实体转为XML /// </summary> /// <param name="entity">ResponseMessage实体</param> /// <returns></returns> public static XDocument ConvertEntityToXml(ResponseMessageBase entity) { return(EntityHelper.ConvertEntityToXml(entity)); }
public ActionResult OldPost(string signature, string timestamp, string nonce, string echostr) { LocationService locationService = new LocationService(); EventService eventService = new EventService(); if (!CheckSignature.Check(signature, timestamp, nonce, Token)) { return(Content("参数错误!")); } XDocument requestDoc = null; try { requestDoc = XDocument.Load(Request.InputStream); var requestMessage = RequestMessageFactory.GetRequestEntity(requestDoc); //如果不需要记录requestDoc,只需要: //var requestMessage = RequestMessageFactory.GetRequestEntity(Request.InputStream); requestDoc.Save(ServerUtility.ContentRootMapPath("~/App_Data/" + SystemTime.Now.Ticks + "_Request_" + requestMessage.FromUserName + ".txt"));//测试时可开启,帮助跟踪数据 ResponseMessageBase responseMessage = null; switch (requestMessage.MsgType) { case RequestMsgType.Text: //文字 { //TODO:交给Service处理具体信息,参考/Service/EventSercice.cs 及 /Service/LocationSercice.cs var strongRequestMessage = requestMessage as RequestMessageText; var strongresponseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageText>(requestMessage); strongresponseMessage.Content = string.Format( "您刚才发送了文字信息:{0}\r\n您还可以发送【位置】【图片】【语音】等类型的信息,查看不同格式的回复。\r\nSDK官方地址:https://sdk.weixin.senparc.com", strongRequestMessage.Content); responseMessage = strongresponseMessage; break; } case RequestMsgType.Location: //位置 { responseMessage = locationService.GetResponseMessage(requestMessage as RequestMessageLocation); break; } case RequestMsgType.Image: //图片 { //TODO:交给Service处理具体信息 var strongRequestMessage = requestMessage as RequestMessageImage; var strongresponseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageNews>(requestMessage); strongresponseMessage.Articles.Add(new Article() { Title = "您刚才发送了图片信息", Description = "您发送的图片将会显示在边上", PicUrl = strongRequestMessage.PicUrl, Url = "https://sdk.weixin.senparc.com" }); strongresponseMessage.Articles.Add(new Article() { Title = "第二条", Description = "第二条带连接的内容", PicUrl = strongRequestMessage.PicUrl, Url = "https://sdk.weixin.senparc.com" }); responseMessage = strongresponseMessage; break; } case RequestMsgType.Voice: //语音 { //TODO:交给Service处理具体信息 var strongRequestMessage = requestMessage as RequestMessageVoice; var strongresponseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageMusic>(requestMessage); strongresponseMessage.Music.MusicUrl = "https://sdk.weixin.senparc.com/Content/music1.mp3"; responseMessage = strongresponseMessage; break; } case RequestMsgType.Event: //事件 { responseMessage = eventService.GetResponseMessage(requestMessage as RequestMessageEventBase); break; } default: throw new ArgumentOutOfRangeException(); } var responseDoc = EntityHelper.ConvertEntityToXml(responseMessage); responseDoc.Save(ServerUtility.ContentRootMapPath("~/App_Data/" + SystemTime.Now.Ticks + "_Response_" + responseMessage.ToUserName + ".txt"));//测试时可开启,帮助跟踪数据 return(Content(responseDoc.ToString())); //如果不需要记录responseDoc,只需要: //return Content(responseMessage.ConvertEntityToXmlString()); } catch (Exception ex) { using ( TextWriter tw = new StreamWriter(ServerUtility.ContentRootMapPath("~/App_Data/Error_" + SystemTime.Now.Ticks + ".txt"))) { tw.WriteLine(ex.Message); tw.WriteLine(ex.InnerException.Message); if (requestDoc != null) { tw.WriteLine(requestDoc.ToString()); } tw.Flush(); tw.Close(); } return(Content("")); } }
public static string ConvertEntityToXmlStr(IResponseMessageBase entity) { return(EntityHelper.ConvertEntityToXml <IResponseMessageBase>(entity).ToString()); }