C# 微信公众号开发,给公众发送消息出现异常

服务端接收微信公众号的消息,出现异常的原因是接收的xml 格式数据有空格不能正常解析为xml数据。

方法/步骤

  1. 1

        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 > ";

  2. 2

    直接LoadXml(),抛

    异常详细信息: System.Xml.XmlException: 名称不能以“ ”字符(十六进制值 0x20)开头。

  3. 3

            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数据,没有抛出异常。

  4. 4

    异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

    // string Event = rootElement.SelectSingleNode("Event").InnerText;

    // string EventKey = rootElement.SelectSingleNode("EventKey").InnerText;

    节点Event和EventKey不存在。所以会抛出异常信息。

  5. 5

    正常接收发送给微信公众号的消息。

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除

咨询热线(9:00 - 18:00)
0755 - 29812418
微信公众号二维码
微信公众号二维码
微信公众号
返回顶部