【微信开发】“你问我答”

前言


  如题,我们在使用像中国移动等公众号时,可以通过输入一些文本内容来查询我们需要的信息,实现我们“提问”,公众号自动“回答”,将微信公众号接入我们自己的网站,通过微信将消息转发给用户。




准备


  在上篇文章-【微信开发】开启开发者模式中,我们已经使用开发者模式绑定了我们自己的服务,完成了开发者身份的验证,这次需要添加的是对用户信息处理的方法。

  微信进行开发者身份验证是会向填写的服务器发送一个get请求,而用户发送的消息则是向服务器发送一个post请求,也就是说如何使用同一个服务器地址,同时可以响应不同类型的请求。

[HttpGet]
[ActionName("Index")]
public ActionResult Get()
{}

[HttpPost]
[ActionName("Index")]
public ActionResult Post()
{}

  通过注解的方式,实现了不同的请求方式跳转到不同的方法,访问的却是同一个地址:http://localhost:7388/WeiChatTest/Index

开发


  微信公众平台发给开发者后台的是XML格式的数据,如粉丝向公众号发送“Hello”,开发者后台接收到的是:

<xml>
<ToUserName><![CDATA[公众号]]></ToUserName>
<FromUserName><![CDATA[粉丝号]]></FromUserName>
<CreateTime>1460537339</CreateTime>//时间戳,发送时间
<MsgType><![CDATA[text]]></MsgType>//消息类型
<Content><![CDATA[Hello]]></Content>//消息内容
<MsgId>6272960105994287618</MsgId>//消息ID,为了标识消息,微信后台系统自动产生
</xml> 

  同样的,开发者后台返回的消息,也要符合上面的XML数据格式。微信支持除文本外,如图片、语音、视频等消息类型,为了便于上手,这次只使用文本消息类型来说明,基本的代码如下所示:

public ActionResult Post()
{
      //接收数据
      System.IO.StreamReader reader = new System.IO.StreamReader(Request.InputStream); 
      String xmlData = reader.ReadToEnd();
      XElement xdoc = XElement.Parse(xmlData);

      //解析XML
      var toUserName = xdoc.Element("ToUserName").Value;
      var fromUserName = xdoc.Element("FromUserName").Value;
      var createTime = xdoc.Element("CreateTime").Value;
      var msgtype = xdoc.Element("MsgType").Value;
      var content = xdoc.Element("Content").Value;
      DateTime datatime =  DateTime.Now;
      int datetime = 1460541339;

      //回复内容
      StringBuilder resxml = new StringBuilder(
      string.Format("<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>", fromUserName, toUserName, datetime));
      resxml.AppendFormat("<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{0}]]></Content><FuncFlag>0</FuncFlag></xml>", content);
      string msg = resxml.ToString();
      return Content(msg);

}


这里写图片描述


测试


  在使用公众号进行真实环境测试之前,可以借助微信平台提供的接口测试工具来进行测试。

微信公众平台接口调试工具


这里写图片描述

  • 测试结果如下图所示,返回了一条XML格式的数据,请求成功。


这里写图片描述

  • 关注微信公众号,发送消息。


评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值