上一篇说到配置和验证《C#微信开发之旅--准备阶段

下面来实现一下简单的信息回复。

也就是接收XML,返回XML

可以去看下微信开发文档的说明:http://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html

根据请求的信息类型,创建了一个信息请求类:(忘记从哪里拷贝过来的了)

//微信请求类
public class RequestXML
{
private String toUserName = String.Empty; /// <summary>
/// 公众号
/// </summary>
public String ToUserName
{
get { return toUserName; }
set { toUserName = value; }
} private String fromUserName = ""; /// <summary>
/// 发送方微信号
/// </summary>
public String FromUserName
{
get { return fromUserName; }
set { fromUserName = value; }
} private String createTime = String.Empty; /// <summary>
/// 创建时间
/// </summary>
public String CreateTime
{
get { return createTime; }
set { createTime = value; }
} private String msgType = String.Empty; /// <summary>
/// 信息类型 地理位置:location,文本消息:text,消息类型:image
/// </summary>
public String MsgType
{
get { return msgType; }
set { msgType = value; }
} private String content = String.Empty; /// <summary>
/// 信息内容
/// </summary>
public String Content
{
get { return content; }
set { content = value; }
} private String location_X = String.Empty; /// <summary>
/// 地理位置纬度
/// </summary>
public String Location_X
{
get { return location_X; }
set { location_X = value; }
} private String location_Y = String.Empty; /// <summary>
/// 地理位置经度
/// </summary>
public String Location_Y
{
get { return location_Y; }
set { location_Y = value; }
} private String scale = String.Empty; /// <summary>
/// 地图缩放大小
/// </summary>
public String Scale
{
get { return scale; }
set { scale = value; }
} private String mapInfo = String.Empty; /// <summary>
/// 地理位置信息
/// </summary>
public String MapInfo
{
get { return mapInfo; }
set { mapInfo = value; }
} private String picUrl = String.Empty; /// <summary>
/// 图片链接
/// </summary>
public String PicUrl
{
get { return picUrl; }
set { picUrl = value; }
} private String _event;
/// <summary>
/// 事件类型
/// </summary>
public String Event
{
get { return _event; }
set { _event = value; }
} private String eventKey;
/// <summary>
/// 事件key
/// </summary>
public String EventKey
{
get { return eventKey; }
set { eventKey = value; }
}
}

1.我们接收XML信息,然后读取其中的信息保存到RequestXML中,然后根据请求类型,返回对应的信息

/// <summary>
/// 接收信息
/// </summary>
/// <param name="postStr"></param>
public void Handle(String postStr)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(postStr); XmlElement rootElement = doc.DocumentElement;
XmlNode MsgType = rootElement.SelectSingleNode("MsgType"); RequestXML requestXML = new RequestXML();
requestXML.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;
requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;
requestXML.MsgType = MsgType.InnerText; if (requestXML.MsgType == "text")
{
requestXML.Content = rootElement.SelectSingleNode("Content").InnerText;
} else if (requestXML.MsgType == "location")
{
requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText;
requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText;
requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText;
requestXML.MapInfo = rootElement.SelectSingleNode("Label").InnerText;
} else if (requestXML.MsgType == "image")
{
requestXML.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText;
}
else if (requestXML.MsgType == "event")//事件
{
requestXML.Event = rootElement.SelectSingleNode("Event").InnerText;
if (requestXML.Event == "CLICK")//点击事件
{
requestXML.EventKey = rootElement.SelectSingleNode("EventKey").InnerText;
}
else if (requestXML.Event == "subscribe")//订阅
{
}
} ResponseMsg(requestXML);
}

上面已经处理好了请求信息,现在就要对请求作出回复,回复的信息格式也是XML。

具体也可以看下微信开发文档:http://mp.weixin.qq.com/wiki/14/89b871b5466b19b3efa4ada8e577d45e.html

现在就做一个简单的文本回复,就没有弄一个回复类。

/// <summary>
/// 回复消息
/// </summary>
/// <param name="weixinXML"></param>
private void ResponseMsg(RequestXML requestXML)
{
String responseContent = String.Empty; if (requestXML.MsgType == "text")//文本
{
responseContent = FormatTextXML(requestXML.FromUserName, requestXML.ToUserName, "基本回复\r\n" + DateTime.Now.ToString() + "\r\n" + requestXML.FromUserName);
}
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.Write(responseContent);
}

上面就是一个简单的文本回复,如果请求的信息是文本的话,我会返回一句话。FormatTextXML就是把封装要返回的XML。

因为我们在开发文档中可以看见,返回的文本信息的话,格式为:

 <xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>

所以FormatTextXML就这样写了:

/// <summary>
/// 返回格式化文本XML内容
/// </summary>
/// <param name="fromUserName"></param>
/// <param name="toUserName"></param>
/// <param name="content"></param>
/// <returns></returns>
private String FormatTextXML(String fromUserName, String toUserName, String content)
{
return "<xml><ToUserName><![CDATA[" + fromUserName + "]]></ToUserName><FromUserName><![CDATA[" + toUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + content + "]]></Content><FuncFlag>1</FuncFlag></xml>";
}

这样一个简单的文本回复就弄好了! 你发送文本信息给公众号,就能得到一个回复了。

一点积累一点点!

C#微信开发之旅--基本信息的回复的更多相关文章

  1. C#微信开发之旅--自定义菜单

    上一篇说道基本信息的回复<C#微信开发之旅--基本信息的回复>,当中就说到文本信息的回复,其他信息的回复,可以参考下开发文档中回复信息的格式进行修改就可以. 下面来实现下自定义菜单.据我了 ...

  2. 微信开发之消息接收与回复--weixin-java-tools

    一.前言 在上一篇文章<微信开发之如何使用开发工具--weixin-java-tools>中我给各位介绍了weixin-java-tools,并且介绍了如何使用weixin-java-to ...

  3. C#微信开发之旅--准备阶段

    最近才开始学微信开发的相关内容,记录下,慢慢的养成习惯! 1.申请公众号: 公众号分为 订阅号 和 服务号.他们之前的区别可以点击这里查看 因为我们是测试的,所以可以直接申请测试帐号,就把所有的功能都 ...

  4. C#微信开发之旅(二):基础类之HttpClientHelper(更新:SSL安全策略)

    public class HttpClientHelper   2     {   3         /// <summary>   4         /// get请求   5    ...

  5. 记微信开发(自定义回复&关注回复)

    记微信开发(自定义回复&关注回复) 记微信开发(自定义回复&关注回复) code: <?php/** * wechat php test *///define your toke ...

  6. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...

  7. Nodejs微信开发使用wechat-api回复多条消息

    在上一往篇文章<Nodejs微信开发>中,微信后台能够正常的接收到客户端的消息,并能够简单的回复一条消息至客户端. 但我的目录是将微信与Bot Framework进行关联,那么肯定就有一些 ...

  8. Java企业微信开发_05_消息推送之被动回复消息

    一.本节要点 1.消息的加解密 微信加解密包 下载地址:http://qydev.weixin.qq.com/java.zip      ,此包中封装好了AES加解密方法,直接调用方法即可. 其中,解 ...

  9. 微信.NET 微信开发 自己主动内容回复 ASP.NET C#代码

    微信开发中,首先遇到的问题就是处理怎样接收和响应用户消息 , 本文将向大家介绍一下方法和关键的代码. 本文使用的接口库是  :https://github.com/chendong152/Weixin ...

随机推荐

  1. 【HTML】Intermediate4:Tables:rowspan and colspan

    1.</th> header cell As with td elements,these must be enclosed inside tr elements 2.</tr co ...

  2. 使用Windows Azure创建Windows系统虚拟机-下

    如何在创建虚拟机之后登录虚拟机 这部分将展示如何登录到虚拟机,所以你可以管理它的设置和你会上面运行的应用程序. 注意: 对于要求和故障排除技巧,请参阅“使用RDP或SSH连接到Azure虚拟机”( C ...

  3. 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程02:关键帧动画导入与切割》

    2. 关键帧动画导入与切割 动画的分割与导入概述: 在游戏当中,游戏角色在不同状态下会有不同的动作,这些动作在引擎里相当于一段段的动画片段.当导入模型资源的时候,连同模型动画都会一并导入到引擎中.开发 ...

  4. 【Kafka入门】Kafka入门第一篇:基础概念篇

    Kafka简介 Kafka是一个消息系统服务框架,它以提交日志的形式存储消息,并且消息的存储是分布式的,为了提供并行性和容错保障,消息的存储是分区冗余形式存在的. Kafka的架构 Kafka中包含以 ...

  5. HW3.13

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  6. 局域网内Linux服务器时间同步

    局域网内Linux服务器时间同步   1.将一台能够上网的服务器作为时间服务器:  # /usr/bin/rdate -s time-b.timefreq.bldrdoc.gov //将时间服务器与互 ...

  7. 问题-[WIN8.132位系统]安装Win8.1 遇到无法升级.NET Framework 3.5.1

    问题现象:安装Win8后都遇到了无法升级.NET Framework 3.5.1的问题,在线升级会遇到错误0x800F0906.这使得91手机助手等很多软件无法运行,更郁闷的是,网上几乎所有的解决办法 ...

  8. 教程-Delphi多线程数据库查询(ADO)

    ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  9. 使用 Infragistics 的 NetAdvantage 组件时替换部分菜单语言的方法

    Infragistics 的 NetAdvantage 组件很好用,不过有些自动的菜单默认都是英文的,一直想替换成中文,以下就是研究了一下午整出来的几行代码,貌似网上很难找到此类的相关资料,替换的资源 ...

  10. JBPM学习(二):ProcessEngine与Service API

    1.获取processEngine的方法: a) 方法一 private ProcessEngine processEngine = new Configuration().setResource(& ...