服务端接收微信公众号的消息,出现异常的原因是接收的xml 格式数据有空格不能正常解析为xml数据。
方法/步骤
IIS服务器接收到的XML 数据:
string weweop = "<xml><ToUserName><![CDATA[gh_3b12ff052d79]]></ToUserName>< FromUserName >< ![CDATA[o68N91ZoTlxcWvDufZeTPPoqE5rQ]] ></ FromUserName >< CreateTime > 1561861323 </ CreateTime >"
+ "< MsgType ><![CDATA[text]]></ MsgType >"
+ "< Content ><![CDATA[1]]></ Content >< MsgId > 22360477099853556 </ MsgId ></ xml > ";
直接LoadXml(),抛
异常详细信息: System.Xml.XmlException: 名称不能以“ ”字符(十六进制值 0x20)开头。
XmlDocument requestDocXml = new XmlDocument();
requestDocXml.LoadXml(Regex.Replace(weweop, "\\s+", ""));
XmlElement rootElement = requestDocXml.DocumentElement;
string ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;
string FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
string CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;
string MsgType = rootElement.SelectSingleNode("MsgType").InnerText;
用正则表达式替换掉所有空格后,在解析xml数据,没有抛出异常。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
// string Event = rootElement.SelectSingleNode("Event").InnerText;
// string EventKey = rootElement.SelectSingleNode("EventKey").InnerText;
节点Event和EventKey不存在。所以会抛出异常信息。
正常接收发送给微信公众号的消息。
免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除