使用.net 操作 微信公众平台 —— 接收用户操作

目录

  1. 使用.net 操作 微信公众平台 —— 接入

  2. 使用.net 操作 微信公众平台 —— 生成微信菜单

  3. 使用.net 操作 微信公众平台 —— 接收并回复用户消息

    3.1 使用.net 操作 微信公众平台 —— 接收用户操作 —— 详细解析

        3.1.1 使用.net 操作 微信公众平台 —— 接收用户操作 —— 关注/取消关注 公众号

        3.1.2 使用.net 操作 微信公众平台 —— 接收用户操作 —— 接收用户发送的消息

    3.2 使用.net 操作 微信公众平台 —— 回复用户消息

        3.2.1 使用.net 操作 微信公众平台 —— 回复用户消息 —— 回复文本消息

        3.2.2 使用.net 操作 微信公众平台 —— 回复用户消息 —— 回复图片消息


关注回复

1. 回到之前的 CheckWxToken.aspx,将验证的代码注释

// 验证的代码
//protected void Page_Load(object sender, EventArgs e)
//{
//    string postStr = "";
//    if (Request.HttpMethod.ToLower() == "post")
//    {
//        System.IO.Stream s = System.Web.HttpContext.Current.Request.InputStream;
//        byte[] b = new byte[s.Length];
//        s.Read(b, 0, (int)s.Length);
//        postStr = System.Text.Encoding.UTF8.GetString(b);
//        if (!string.IsNullOrEmpty(postStr))
//        {
//            Response.End();
//        }
//    }
//    else
//    {
//        Valid();
//    }
//}

// 正常使用的代码
protected void Page_Load(object sender, EventArgs e)
{
}

2.  接收信息

 // 正常使用的代码 验证时注释
protected void Page_Load(object sender, EventArgs e)
{
    if (Request.HttpMethod == "POST")
    {
        string weixin = "";
        weixin = PostInput();//获取xml数据
    }
}

/// <summary>
/// 获取post请求数据
/// </summary>
/// <returns></returns>
private string PostInput()
{
    Stream s = System.Web.HttpContext.Current.Request.InputStream;
    byte[] b = new byte[s.Length];
    s.Read(b, 0, (int)s.Length);
    return Encoding.UTF8.GetString(b);
}

3. 打印weixin,即可查看具体消息

4. 将获取到的xml数据,转换为json,方便操作

ExmlMsg xmlMsg = Fromat(weixin);

/// <summary>
/// 格式化xml数据
/// </summary>
/// <param name="weixin">xml数据</param>
/// <returns></returns>
private ExmlMsg Fromat(string weixin) {
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(weixin);//读取xml字符串
    XmlElement root = doc.DocumentElement;
    ExmlMsg xmlMsg = GetExmlMsg(root);
    return xmlMsg;
}

/// <summary>
/// 格式化
/// </summary>
/// <param name="root"></param>
/// <returns></returns>
private ExmlMsg GetExmlMsg(XmlElement root)
{
    ExmlMsg xmlMsg = new ExmlMsg()
    {
        FromUserName = root.SelectSingleNode("FromUserName").InnerText,
        ToUserName = root.SelectSingleNode("ToUserName").InnerText,
        CreateTime = root.SelectSingleNode("CreateTime").InnerText,
        MsgType = root.SelectSingleNode("MsgType").InnerText,
    };
    if (xmlMsg.MsgType.Trim().ToLower() == "text")
    {
        xmlMsg.Content = root.SelectSingleNode("Content").InnerText;
    }
    else if (xmlMsg.MsgType.Trim().ToLower() == "event")
    {
        xmlMsg.EventName = root.SelectSingleNode("Event").InnerText;
    }

    if (root.SelectSingleNode("EventKey") != null)
    {
        xmlMsg.EventKey = root.SelectSingleNode("EventKey").InnerText;
    }

    return xmlMsg;
}

/// <summary>
/// 接收到的实体类
/// </summary>
private class ExmlMsg
{
    /// <summary>
    /// 本公众账号
    /// </summary>
    public string ToUserName { get; set; }

    /// <summary>
    /// 用户账号
    /// </summary>
    public string FromUserName { get; set; }

    /// <summary>
    /// 发送时间戳
    /// </summary>
    public string CreateTime { get; set; }

    /// <summary>
    /// 发送的文本内容
    /// </summary>
    public string Content { get; set; }

    /// <summary>
    /// 消息的类型
    /// </summary>
    public string MsgType { get; set; }

    /// <summary>
    /// 事件名称
    /// </summary>
    public string EventName { get; set; }

    /// <summary>
    /// 事件关键词
    /// </summary>
    public string EventKey { get; set; }
}

5. 处理xml

ResponseMsg(xmlMsg);

/// <summary>
/// 消息类型适配器
/// </summary>
/// <param name=""></param>
private void ResponseMsg(ExmlMsg xmlMsg)
{
    string messageType = xmlMsg.MsgType;//获取收到的消息类型。文本(text),图片(image),语音等。

    try
    {
        switch (messageType)
        {
            case "text": // 当消息为文本时
                break;
            case "event": // 事件
                break;
            case "image":
                break;
            case "voice":
                break;
            case "vedio":
                break;
            case "location":
                break;
            case "link":
                break;
            default:
                break;
        }
    }
    catch (Exception)
    {
    }
}

猜你喜欢

转载自blog.csdn.net/qq_31267183/article/details/83211594