.Net 微信公众帐号实现发送消息

1.接收请求,请求页面采用Post传值的方式 ,并接收读取页面传递的XML,官方XML格式:如下

 <xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName> 
 <CreateTime>1348831860</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[this is a test]]></Content>
 <MsgId>1234567890123456</MsgId>
 </xml>

2.Net 页面接收请求代码如下: HandleMsg 处理接收的XML,并把相关信息存放到自己创建的实体中_RequestMsgModel。

if (Request.HttpMethod.ToLower().Equals("post".ToLower())) {
            //--获取传入的内容
            Stream contextStream = HttpContext.Current.Request.InputStream;
            byte[] b = new byte[contextStream.Length];
            contextStream.Read(b, 0, (int)contextStream.Length);
            //--转换成字符串
            string contextStr = System.Text.Encoding.UTF8.GetString(b);
            if (!string.IsNullOrEmpty(contextStr)) {
                //--操作XML
                new WeChatHandle().HandleMsg(contextStr);
            }
        } 

   /// <summary>
    /// 获取请求信息的实体,并调用发送信息的方法
    /// </summary>
    /// <param name="context"></param>
    public void HandleMsg(string context) {
        //--加载Xml
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(context);
        XmlElement rootElement = doc.DocumentElement;
        //--获取xml接点的值
        _RequestMsgModel = new RequestMsgModel();
        _RequestMsgModel.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;
        _RequestMsgModel.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
        _RequestMsgModel.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;
        _RequestMsgModel.MsgType = rootElement.SelectSingleNode("MsgType").InnerText;
        switch (_RequestMsgModel.MsgType.ToLower()) {
            case "text":
                _RequestMsgModel.Content = rootElement.SelectSingleNode("Content").InnerText;
                break;
            case "image": //图片
                _RequestMsgModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText;
                break;
            case "location": //位置
            	break;
            case "link": //链接
                break;
            case "event": //事件推送
                break;
            default:
                break;
        }
    }

3.处理发送XML,_RequestMsgModel 存放需要发送的相关信息。

private void ResponseMsg() {
        try {
            string resxml = "";
            switch (_RequestMsgModel.MsgType) {
                case "text":
                    //在这里执行一系列操作,从而实现自动回复内容. 
                    resxml = SendText(resxml, _RequestMsgModel);
                    break;
                case "image":
                    break;
            }
            System.Web.HttpContext.Current.Response.Write(resxml);

        } catch (Exception ex) {

        }
    }
    /// <summary>
    /// 发送文本
    /// </summary>
    /// <param name="resxml"></param>
    /// <returns></returns>
    private string SendText(string resxml, RequestMsgModel __RequestMsgModel) {
        string responseXml = " <xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>{2}</CreateTime>"
        + "<MsgType><![CDATA[{3}]]></MsgType><Content><![CDATA[{4}]]></Content><MsgId>{5}</MsgId></xml>";
        resxml = string.Format(responseXml, __RequestMsgModel.FromUserName, __RequestMsgModel.ToUserName, DateTime.Now.ToLongTimeString()
              , __RequestMsgModel.MsgType, __RequestMsgModel.Content, Int64.Parse("1000000"));
        return resxml;
    }

4.RequestMsgModel XML接收、发送的相关信息实体

/// <summary>
/// RequestMsgModel 接收信息的实体
/// </summary>
public class RequestMsgModel {
    private string toUserName = "";
    /// <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 = "";
    /// <summary>
    /// 创建时间
    /// </summary>
    public string CreateTime {
        get { return createTime; }
        set { createTime = value; }
    }
    private string msgType = "";
    /// <summary>
    /// 信息类型 地理位置:location,文本消息:text,消息类型:image
    /// </summary>
    public string MsgType {
        get { return msgType; }
        set { msgType = value; }
    }
    private string content = "";
    /// <summary>
    /// 信息内容
    /// </summary>
    public string Content {
        get { return content; }
        set { content = value; }
    }
    private string location_X = "";
    /// <summary>
    /// 地理位置纬度
    /// </summary>
    public string Location_X {
        get { return location_X; }
        set { location_X = value; }
    }
    private string location_Y = "";
    /// <summary>
    /// 地理位置经度
    /// </summary>
    public string Location_Y {
        get { return location_Y; }
        set { location_Y = value; }
    }
    private string scale = "";
    /// <summary>
    /// 地图缩放大小
    /// </summary>
    public string Scale {
        get { return scale; }
        set { scale = value; }
    }
    private string label = "";
    /// <summary>
    /// 地理位置信息
    /// </summary>
    public string Label {
        get { return label; }
        set { label = value; }
    }
    private string picUrl = "";
    /// <summary>
    /// 图片链接,开发者可以用HTTP GET获取
    /// </summary>
    public string PicUrl {
        get { return picUrl; }
        set { picUrl = value; }
    }
    /// <summary>
    /// 链接
    /// </summary>
    private string title;

    public string Title {
        get { return title; }
        set { title = value; }
    }
    /// <summary>
    /// 链接
    /// </summary>
    private string description;

    public string Description {
        get { return description; }
        set { description = value; }
    }
    /// <summary>
    /// 链接
    /// </summary>
    private string url;

    public string Url {
        get { return url; }
        set { url = value; }
    }
}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序是一种基于微信平台的轻量级应用程序,具有方便、快捷、易用的特点。通过开发微信小程序,可以实现价格竞猜的功能。 首先,我们需要在微信小程序中创建一个页面,作为价格竞猜的界面。可以使用小程序提供的组件和API来设计界面,包括输入框、按钮、文本等。 在页面中,我们需要定义一个变量来存储用户输入的竞猜价格,并通过输入框获取用户输入。同时,我们可以设置一个按钮,让用户点击后确认提交竞猜价格。 接下来,我们可以通过调用微信提供的接口,来获取当前商品的实时价格。可以通过接口请求获取数据,并将数据展示在页面上,让用户能够了解当前的价格情况。 在用户提交竞猜价格后,我们可以将用户输入的价格与实际价格进行比较,并给出相应的提示。可以使用条件判断来判断用户的竞猜是否正确,并展示相应的提示信息,如猜对了、猜高了或猜低了。 当用户猜对时,我们可以给予奖励,如积分或优惠券。可以通过调用微信提供的接口来实现用户奖励的功能。 除了基本的功能之外,我们还可以增加一些额外的功能,如显示竞猜历史记录、设置竞猜的时间限制等。这些功能可以提升用户的体验,并增加竞猜的趣味性。 总之,通过微信小程序可以方便地实现价格竞猜的功能。只需通过界面设计、数据获取与展示、用户交互等一系列操作,就可以实现一个简单而有趣的价格竞猜小程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值