C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)

C#/ASP.NET MVC微信接口开发文章目录:

1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台

2.C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)

 

 

 一、拼凑回复的XML字符串

微信被动回复的形式有一下六种:

分别对应不同的XML形式,这里以文本消息和图文为例,读者举一反三其他的类似,不再赘述:

回复的文本消息:

 1 /// <summary>
 2 /// 回复文本
 3 /// </summary>
 4 /// <param name="FromUserName">发送给谁(openid)</param>
 5 /// <param name="ToUserName">来自谁(公众账号ID)</param>
 6 /// <param name="Content">回复类型文本</param>
 7 /// <returns>拼凑的XML</returns>
 8 public static string ReText(string FromUserName, string ToUserName,string Content)
 9 {
10     string XML = "<xml><ToUserName><![CDATA[" + FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + ToUserName + "]]></FromUserName>";//发送给谁(openid),来自谁(公众账号ID)
11     XML += "<CreateTime>" + sohovan.com.common.CommonMethod.ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";//回复时间戳
12     XML += "<MsgType><![CDATA[text]]></MsgType>";//回复类型文本
13     XML += "<Content><![CDATA["+ Content + "]]></Content><FuncFlag>0</FuncFlag></xml>";//回复内容 FuncFlag设置为1的时候,自动星标刚才接收到的消息,适合活动统计使用
14     return XML;
15 }

回复单图文:

 1 /// <summary>
 2 /// 回复单图文
 3 /// </summary>
 4 /// <param name="FromUserName">发送给谁(openid)</param>
 5 /// <param name="ToUserName">来自谁(公众账号ID)</param>
 6 /// <param name="Title">标题</param>
 7 /// <param name="Description">详情</param>
 8 /// <param name="PicUrl">图片地址</param>
 9 /// <param name="Url">地址</param>
10 /// <returns>拼凑的XML</returns>
11 public static string ReArticle(string FromUserName, string ToUserName, string Title, string Description, string PicUrl, string Url)
12 {
13     string XML = "<xml><ToUserName><![CDATA[" + FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + ToUserName + "]]></FromUserName>";//发送给谁(openid),来自谁(公众账号ID)
14     XML += "<CreateTime>" + sohovan.com.common.CommonMethod.ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";//回复时间戳
15     XML += "<MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>1</ArticleCount><Articles>";
16     XML += "<item><Title><![CDATA[" + Title + "]]></Title><Description><![CDATA[" + Description + "]]></Description><PicUrl><![CDATA[" + PicUrl + "]]></PicUrl><Url><![CDATA[" + Url + "]]></Url></item>";
17     XML += "</Articles><FuncFlag>0</FuncFlag></xml>";
18     return XML;
19 }

多图文可以根据项目需求举一反三,这里给个例子:

 1 /// <summary>
 2 /// 多图文回复
 3 /// </summary>
 4 /// <param name="FromUserName">发送给谁(openid)</param>
 5 /// <param name="ToUserName">来自谁(公众账号ID)</param>
 6 /// <param name="ArticleCount">图文数量</param>
 7 /// <param name="dtArticle"></param>
 8 /// <returns></returns>
 9 public static string ReArticle(string FromUserName, string ToUserName, int ArticleCount, System.Data.DataTable dtArticle)
10 {
11     string XML = "<xml><ToUserName><![CDATA[" + FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + ToUserName + "]]></FromUserName>";//发送给谁(openid),来自谁(公众账号ID)
12     XML += "<CreateTime>" + sohovan.com.common.CommonMethod.ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";//回复时间戳
13     XML += "<MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>" + ArticleCount + "</ArticleCount><Articles>";
14     foreach (System.Data.DataRow Item in dtArticle.Rows)
15     {
16         XML += "<item><Title><![CDATA[" + Item["Title"] + "]]></Title><Description><![CDATA[" + Item["Description"] + "]]></Description><PicUrl><![CDATA[" + Item["PicUrl"] + "]]></PicUrl><Url><![CDATA[" + Item["Url"] + "]]></Url></item>";
17     }
18     XML += "</Articles><FuncFlag>0</FuncFlag></xml>";
19     return XML;
20 }

二、回复消息即在微信请求我们地址的时候根据请求的情况回复我们想给的XML字符串

这里情况比较多,可以根据项目需求做对于的设置,编写一个网站后台管理关键字、图片、语音回复等等

这里以文本为例,根据文本的内容(即关键字)回复文本还是回复图文消息:

根据文本得到XML:

 1 public static string GetText(string FromUserName, string ToUserName, string Content)
 2 {
 3     sohovan.com.common.CommonMethod.WriteTxt(Content);//接收的文本消息
 4     string XML = "";
 5     switch (Content) { 
 6         case "关键字":
 7             XML = ReText(FromUserName, ToUserName, "关键词回复测试");
 8             break;
 9         case"单图文":
10             XML = ReArticle(FromUserName, ToUserName, "测试标题", "测试详情——百度搜索链接", "http://pic.cnblogs.com/avatar/743013/20150521120816.png", "http://www.baidu.com");
11             break;
12         default:
13             XML = ReText(FromUserName, ToUserName, "无对应关键字");
14             break;
15     }
16     return XML;
17 }

根据接收的消息WxXmlModel回复消息:

 1 private void ResponseXML(WxXmlModel WxXmlModel)
 2 {
 3     string XML = "";
 4     switch (WxXmlModel.MsgType)
 5     { 
 6         case "text"://文本回复
 7             XML = sohovan.com.wxapi.ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content);
 8             break;
 9         default://默认回复
10             break;
11     }
12     HttpContext.Current.Response.Write(XML);
13     HttpContext.Current.Response.End();
14 }

 

本文版权归作者(谢俊)和博客园所有,欢迎转载,转载请标明出处。

原文地址:http://www.cnblogs.com/net-xiejun/

微信开发群C#.NETWEB程序开发交流

完整源码下载:https://github.com/xiejun-net/weixin

转载于:https://www.cnblogs.com/net-xiejun/p/4661111.html

微信扫码订阅
UP更新不错过~
关注
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
语言编写一个简单的计算器程序,实现加、减、乘、除四种基本运算。 好的,我会尽力帮您解答。首先,我们需要定义四个变量,分别表示两个操作数和运算符。然后,根据用户输入的运算符,进行相应的计算,并输出结果。以下是一个简单的示例代码: #include <stdio.h> int main() { float num1, num2, result; char operator; printf("请输入两个操作数:\n"); scanf("%f %f", &num1, &num2); printf("请输入运算符:\n"); scanf(" %c", &operator); switch(operator) { case '+': result = num1 + num2; printf("结果为:%.2f\n", result); break; case '-': result = num1 - num2; printf("结果为:%.2f\n", result); break; case '*': result = num1 * num2; printf("结果为:%.2f\n", result); break; case '/': if(num2 == 0) { printf("除数不能为0!\n"); } else { result = num1 / num2; printf("结果为:%.2f\n", result); } break; default: printf("输入的运算符不正确!\n"); break; } return 0; } 以上代码中,我们使用了 switch 语句来根据用户输入的运算符进行相应的计算。如果用户输入的是加号,则将两个操作数相加并输出结果;如果用户输入的是减号,则将两个操作数相减并输出结果;如果用户输入的是乘号,则将两个操作数相乘并输出结果;如果用户输入的是除号,则需要判断除数是否为0,如果为0则输出错误提示,否则将两个操作数相除并输出结果。如果用户输入的运算符不是加、减、乘、除中的任意一个,则输出错误提示。 希望这个简单的示例代码能够帮助您理解如何用 C 语言编写一个简单的计算器程序。如果您还有其他问题或疑问,欢迎随时向我提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值