• 三、接收并响应微信用户


    当微信用户发送信息或事件方式发送过来时,即为post请求
    一、获取用户发送过来的信息(有文本、图片语音、视频等等)

    string data = GetRequestData(); //data即为用户发送过来的信息
    
    /// <summary>
    /// 获取当前请求的数据包内容
    /// </summary>
    public static string GetRequestData()
    {
    
        using (var stream = HttpContext.Current.Request.InputStream)
        {
            using (var reader = new StreamReader(stream, Encoding.UTF8))
            {
                return reader.ReadToEnd();
            }
        }
    }

    二、回复用户信息(有文本、图片语音、视频等等)

    string resXml = ResponseMsg(data); //以xml格式回复
    
    /// <summary>
    /// 回复内容
    /// </summary>
    /// <param name="xmlMsg"></param>
    /// <returns></returns>
    public static string ResponseMsg(string data)
    {
        TextMsg xmlMsg = new TextMsg();
        XElement xml = XElement.Parse(data);
        string type = xml.Element("MsgType").Value;//发送类型
        xmlMsg.FromUserName = xml.Element("FromUserName").Value; //微信用户openId
        xmlMsg.ToUserName = xml.Element("ToUserName").Value; //公众号
        int createTime = GetCreateTime();
        string resXml = "";
    
        #region 回复图文消息
        if (type == "event")
        {
            resXml =
                    "<xml>" +
                        "<ToUserName><![CDATA[" + xmlMsg.FromUserName + "]]></ToUserName>" +
                        "<FromUserName><![CDATA[" + xmlMsg.ToUserName + "]]></FromUserName>" +
                        "<CreateTime>" + createTime + "</CreateTime>" +
                        "<MsgType><![CDATA[news]]></MsgType>" +
                        "<Content><![CDATA[]]></Content>" +
                        "<ArticleCount>1</ArticleCount>" +
                        "<Articles>" +
                            "<item>" +
                                "<Title><![CDATA[天堂纪念网]]></Title>" +
                                "<Description><![CDATA[    天堂纪念网是由珠海市孝爱科技有限公司投资创办的具有自主知识产权的全球网上祭祀服务平台,天堂纪念网除了为用户提供全面、专业的个性化、高仿真、交互性网上祭祀服务外,还提供了强大的氏族宗祠建设平台、讣告发布平台,并将开通在线族谱编撰管理系统,以及“遗嘱馆”即遗嘱在线保密箱服务等,全方位满足用户的多样化需求。]]></Description>" +
                                "<PicUrl><![CDATA[http://mmbiz.qpic.cn/mmbiz/tSibzYJaJwqGWHAeXJut3Jric61bA92KnwWuPSvN9PEdWITHJaoicUvGVGgM2ibibMSpvicRjYV3StSu2Ukxia0O2hYYg/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1]]></PicUrl>" +
                                "<Url><![CDATA[http://mp.weixin.qq.com/s?__biz=MjM5NjQ1MjI0MQ==&mid=503078765&idx=1&sn=c561b5372d89d3f069063a28275021a3#rd]]></Url>" +
                            "</item>" +
                        "</Articles>" +
                            "<FuncFlag>0</FuncFlag>" +
                    "</xml>";
        }
        #endregion
    
        #region 回复文本
        if (type == "text")
        {
            resXml =
                    "<xml>" +
                        "<ToUserName><![CDATA[" + xmlMsg.FromUserName + "]]></ToUserName>" +
                        "<FromUserName><![CDATA[" + xmlMsg.ToUserName + "]]></FromUserName>" +
                        "<CreateTime>" + createTime + "</CreateTime>" +
                        "<MsgType><![CDATA[text]]></MsgType>" +
                        "<Content><![CDATA[" + "请登录www.5201000.com了解更多内容" + "]]></Content>" +
                    "</xml>";
        }
        #endregion
    
        return resXml;
    }
  • 相关阅读:
    FMDB(一)— 简单介绍
    产品设计之设计理念
    整理了一下浅墨大神的Visual C++/DirectX 9.0c的游戏开发手记
    使用scp免passwordserver间传递文件
    游戏架构其一:经常使用工具集合
    Failed to import package with error: Couldn't decompress package
    【从0開始Tornado建站】0.9版本号python站点代码开源--持续更新中
    【Android】 给我一个Path,还你一个酷炫动画
    codeforces Round #Pi (div.2) 567ABCD
    linux 查看磁盘使用情况
  • 原文地址:https://www.cnblogs.com/genesis/p/5519338.html
Copyright © 2020-2023  润新知