微信接口自动回复信息代码问题,就80分了
try
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(weixinXML);//读取XML字符串
XmlElement rootElement = doc.DocumentElement;
XmlNode MsgType = rootElement.SelectSingleNode("MsgType");//获取字符串中的消息类型
string resxml = "";
if (MsgType.InnerText == "text")//如果消息类型为文本消息
{
var model = new
{
ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
MsgType = MsgType.InnerText,
Content = rootElement.SelectSingleNode("Content").InnerText,
MsgId = rootElement.SelectSingleNode("MsgId").InnerText
};
resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";
if (!string.IsNullOrEmpty(model.Content))//如果接收到消息
{
if (model.Content.Contains(" 你好") || model.Content.Contains(" 好") || model.Content.Contains("hi") || model.Content.Contains("hello"))// 你好
{
resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[欢迎您的光临!]]></Title><Description><![CDATA[非常感谢您的关注!]]></Description><PicUrl><![CDATA[http://...jpg]]></PicUrl><Url><![CDATA[http://www.baidu.com/]]></Url></item></Articles><FuncFlag>0</FuncFlag></xml>";
}
}
else//没有接收到消息
{
resxml += "<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[亲,感谢您对我的关注,有事请留言。]]></Content><FuncFlag>0</FuncFlag></xml>";
}
Response.Write(resxml);
}
else//如果是其余的消息类型
{
var model = new
{
ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
};
resxml += "<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[亲,感谢您对我的关注,有事请留言。]]></Content><FuncFlag>0</FuncFlag></xml>";
Response.Write(resxml);
}
}
catch (Exception ex)
{
throw ex;
}
Response.End();
这里面的
var model = new这部分,有点看不懂,总报错,应该怎么修改下呢?
{
ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
};
还有
<Url><![CDATA[http://www.baidu.com/]]></Url>这里面添加链接,我想在链接后面加上?id=FromUserName,这个FromUserName是获取的,应该怎么写呢?求高手 --------------------编程问答-------------------- 先把说明文档仔细看一遍;
1.用户发消息给微信服务器》2.微信服务器收到用户消息》3.微信服务器把消息发给你》4.你解析消息》5.返回给微信服务器》6.微信服务器发消息给用户
微信服务器发过来的消息是xml格式的
1.当微信发过来xml,ToUserName就是代表你的微信号(微信要知道消息发送给谁),fromuser就是代表发送消息的人(这也是代表唯一微信用户的openid:微信标明消息来自哪个用户); 你在处理后xml后返回的给微信服务器,这个时候的ToUserName 要指定为发消息的用户了(因为微信必须知道你要将你的消息要发给谁),那么fromuser就是指定成你自己的微信号...
--------------------编程问答--------------------
例
/// <summary>
/// 处理文本消息
/// </summary>
/// <param name="xml"></param>
/// <returns></returns>
private static string DoTextMsg(XmlDocument xml)
{
//微信服务器发过来xml
//TODO 取出内容
string touser = xml.SelectSingleNode("xml/ToUserName").InnerText;
string fromuser = xml.SelectSingleNode("xml/FromUserName").InnerText;
//下面就是如何处理xml
xml.SelectSingleNode("xml/ToUserName").InnerText = fromuser;//设置接受消息的用户
xml.SelectSingleNode("xml/FromUserName").InnerText = touser;//消息来自谁
xml.SelectSingleNode("xml/Content").InnerText = "这是回复的内容";//这里是你回复的内容,字符串的怎么写都可以
return xml.OuterXml;//以字符串形式返回
}
补充:.NET技术 , ASP.NET