如何构建ASP.NET微信公众号中的用户分组管理web页面
发表于:2024-12-03 作者:千家信息网编辑
千家信息网最后更新 2024年12月03日,如何构建ASP.NET微信公众号中的用户分组管理web页面,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Model层实体类: publi
千家信息网最后更新 2024年12月03日如何构建ASP.NET微信公众号中的用户分组管理web页面
如何构建ASP.NET微信公众号中的用户分组管理web页面,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
Model层实体类:
public class UserList { public string total { get; set; } public string count { get; set; } public userlistopenid data { get; set; } public string next_openid { get; set; } } public class userlistopenid { public Listopenid { get; set; } }
public class WxGroupsInfo { public string Group_ID { get; set; }//分组编号 public string Group_Name { get; set; }//分组名称 public string Group_Count { get; set; }//分组人数 }
WX.aspx内容:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WX.aspx.cs" Inherits="test.WX" %>
WX.aspx.cs代码:
public partial class WX : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { BindGroupList(); this.DataBind(); } private void BindGroupList() { WeiXinServer wxs = new WeiXinServer(); //从缓存读取accesstoken string Access_token = Cache["Access_token"] as string; if (Access_token == null) { //如果为空,重新获取 Access_token = wxs.GetAccessToken(); //设置缓存的数据7000秒后过期 Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration); } string Access_tokento = Access_token.Substring(17, Access_token.Length - 37); string jsonres = ""; string content = Cache["AllGroups_content"] as string; if (content == null) { jsonres = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token=" + Access_tokento; HttpWebRequest myRequest = (HttpWebRequest) WebRequest.Create(jsonres); myRequest.Method = "GET"; HttpWebResponse myResponse = (HttpWebResponse) myRequest.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); content = reader.ReadToEnd(); reader.Close(); //设置缓存的数据7000秒后过期 Cache.Insert("AllGroups_content", content, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration); } //使用前需要引用Newtonsoft.json文件 JObject jsonObj = JObject.Parse(content); int groupsnum = jsonObj["groups"].Count(); Listwxgrouplist = new List (); for (int i = 0; i < groupsnum; i++) { WxGroupsInfo wginfo = new WxGroupsInfo(); wginfo.Group_ID = jsonObj["groups"][i]["id"].ToString(); wginfo.Group_Name = jsonObj["groups"][i]["name"].ToString(); wginfo.Group_Count = jsonObj["groups"][i]["count"].ToString(); wxgrouplist.Add(wginfo); } this.RepeaterGroupList.DataSource = wxgrouplist; this.RepeaterGroupList.DataBind(); } /// /// 绑定事件 /// /// /// protected void RepeaterGroupList_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { Label lbXuHao = e.Item.FindControl("lbXuHao") as Label; int num = 1; lbXuHao.Text = num.ToString(); for (int i = 0; i < this.RepeaterGroupList.Items.Count; i++) { num += 1; lbXuHao.Text = num.ToString(); } LinkButton LinkBtnDeleteGroup = e.Item.FindControl("LinkBtnDeleteGroup") as LinkButton; LinkButton LinkBtnSendByGroup = e.Item.FindControl("LinkBtnSendByGroup") as LinkButton; LinkBtnDeleteGroup.Attributes.Add("OnClick", "return confirm('您确定要删除该分组?删除后该分组内的人员即将恢复到默认分组!')"); LinkBtnDeleteGroup.Attributes.Add("OnClick", "return confirm('您确定要群发消息到该分组?')"); } } ////// 执行事件 /// /// /// protected void RepeaterGroupList_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "DeleteGroups") { WeiXinServer wxs = new WeiXinServer(); string res = ""; //从缓存读取accesstoken string Access_token = Cache["Access_token"] as string; if (Access_token == null) { //如果为空,重新获取 Access_token = wxs.GetAccessToken(); //设置缓存的数据7000秒后过期 Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration); } string Access_tokento = Access_token.Substring(17, Access_token.Length - 37); string posturl = "https://api.weixin.qq.com/cgi-bin/groups/delete?access_token=" + Access_tokento; //POST数据例子: POST数据例子:{"group":{"id":108}} string groupid = e.CommandArgument.ToString(); string postData = "{\"group\":{\"id\":\"" + groupid + "\"}}"; res = wxs.GetPage(posturl, postData); ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('删除成功!由于缓存问题,您可能需要重新登录才能看到效果!');location='WxGroupManageList.aspx';", true); } if (e.CommandName == "SendByGroups") { WeiXinServer wxs = new WeiXinServer(); string res = ""; //从缓存读取accesstoken string Access_token = Cache["Access_token"] as string; if (Access_token == null) { //如果为空,重新获取 Access_token = wxs.GetAccessToken(); //设置缓存的数据7000秒后过期 Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration); } string Access_tokento = Access_token.Substring(17, Access_token.Length - 37); string posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=" + Access_tokento; string groupid = e.CommandArgument.ToString(); //string postData = "{\"group\":{\"id\":\"" + groupid.ToString() + "\"}}"; JObject postData = new JObject(); JObject filter = new JObject(); filter.Add("is_to_all", false); filter.Add("group_id", groupid); JObject text = new JObject(); text.Add("content", "测试内容!"); postData.Add("filter", filter); postData.Add("text", text); postData.Add("msgtype", "text"); res = wxs.GetPage(posturl, postData.ToString()); ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发成功!由于缓存问题,您可能需要重新登录才能看到效果!');location='WxGroupManageList.aspx';", true); } if (e.CommandName == "MoveUserToGroup") { WeiXinServer wxs = new WeiXinServer(); string res = ""; string Access_token = Cache["Access_token"] as string; if (Access_token == null) { Access_token = wxs.GetAccessToken(); Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration); } string Access_tokento = Access_token.Substring(17, Access_token.Length - 37); string posturl = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=" + Access_tokento; string UserListurl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + Access_tokento + "&next_openid="; //{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"} res = wxs.GetPage(UserListurl,""); UserList userList= JsonConvert.DeserializeObject(res); String openid=userList.data.openid.FirstOrDefault(); int togroup_id = 101;//输入分组ID string postData = "{\"openid\":\"" + openid + "\",\"to_groupid\":" + togroup_id + "}"; res = wxs.GetPage(posturl, postData); ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('移动分组成功!由于缓存问题,您可能需要重新登录才能看到效果!');location='WxGroupManageList.aspx';", true); } } /// /// 创建分组 /// /// /// protected void LinkBtnCreateGroup_Click(object sender, EventArgs e) { if (this.txtgroupsName.Value.Equals("分组名称")) { //// ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('不能为空!')", true); this.txtgroupsName.Focus(); return; } WeiXinServer wxs = new WeiXinServer(); string res = ""; ///从缓存读取accesstoken string Access_token = Cache["Access_token"] as string; if (Access_token == null) { //如果为空,重新获取 Access_token = wxs.GetAccessToken(); //设置缓存的数据7000秒后过期 Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration); } string Access_tokento = Access_token.Substring(17, Access_token.Length - 37); string posturl = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=" + Access_tokento; string postData = "{\"group\":{\"name\":\"" + this.txtgroupsName.Value.ToString().Trim() + "\"}}"; res = wxs.GetPage(posturl, postData); ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('创建成功!如未显示,请退出重新登录即可!');location='WxGroupManageList.aspx';", true); } }
WeiXinServer.cs代码:
////// 微信服务类 /// public class WeiXinServer { ////// 获取通行证 /// ///public string GetAccessToken() { string url_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx3eb5bf1290db2ca0&secret=e6013be0a7338c7d3e02877db116e231"; HttpWebRequest myRequest = (HttpWebRequest) WebRequest.Create(url_token); myRequest.Method = "GET"; HttpWebResponse myResponse = (HttpWebResponse) myRequest.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); string content = reader.ReadToEnd(); reader.Close(); return content; } public string GetPage(string p, string postData) { Stream outstream = null; Stream instream = null; StreamReader sr = null; HttpWebResponse response = null; HttpWebRequest request = null; Encoding encoding = Encoding.UTF8; byte[] data = encoding.GetBytes(postData); // 准备请求... try { // 设置参数 request = WebRequest.Create(p) as HttpWebRequest; CookieContainer cookieContainer = new CookieContainer(); request.CookieContainer = cookieContainer; request.AllowAutoRedirect = true; request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; outstream = request.GetRequestStream(); outstream.Write(data, 0, data.Length); outstream.Close(); //发送请求并获取相应回应数据 response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 instream = response.GetResponseStream(); sr = new StreamReader(instream, encoding); //返回结果网页(html)代码 string content = sr.ReadToEnd(); string err = string.Empty; return content; } catch (Exception ex) { string err = ex.Message; return string.Empty; } } }
Edit.aspx内容:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Edit.aspx.cs" Inherits="test.Edit" %>
Edit.aspx.cs代码:
public partial class Edit : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Request.QueryString["id"] != null) { string group_id = Request.QueryString["id"].ToString(); string group_name = Request.QueryString["name"].ToString(); this.txtGroupId.Text = group_id.ToString(); this.txtGroupName.Text = group_name.ToString(); this.txtGroupName.Focus(); } } } ////// 设置 /// /// /// protected void LinkBtnSet_Click(object sender, EventArgs e) { if (String.IsNullOrWhiteSpace(this.txtGroupName.Text.ToString().Trim())) { ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('不能为空!');", true); this.txtGroupName.Focus(); return; } if (this.txtGroupName.Text.Trim().Length > 30) { ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('组名称应在30个字符之内!');", true); this.txtGroupName.Focus(); return; } WeiXinServer wxs = new WeiXinServer(); string res = ""; //从缓存读取accesstoken string Access_token = Cache["Access_token"] as string; if (Access_token == null) { //如果为空,重新获取 Access_token = wxs.GetAccessToken(); //设置缓存的数据7000秒后过期 Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration); } string Access_tokento = Access_token.Substring(17, Access_token.Length - 37); string posturl = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token=" + Access_tokento; //POST数据例子:POST数据例子:{"group":{"id":108,"name":"test2_modify2"}} string postData = "{\"group\":{\"id\":\"" + txtGroupId.Text + "\",\"name\":\"" + this.txtGroupName.Text + "\"}}"; res = wxs.GetPage(posturl, postData); //使用Newtonsoft.json JObject jsonObj = JObject.Parse(res); //获取返回结果的正确|true|false, string isright = jsonObj["errcode"].ToString(); //0 string istrueorfalse = jsonObj["errmsg"].ToString(); //ok if (isright.Equals("0") && istrueorfalse.Equals("ok")) { //修改成功之后,刷新父窗体,关闭本页 ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('修改成功!如未正常显示,属缓存问题,请重新登录即可!');window.open![这里写图片描述](http://img.blog.csdn.net/20161008103126694)er.location.reload();this.close();", true); } else { ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('修改失败!');this.close();", true); } } }
buttonbg.png
结果如图:
看完上述内容,你们掌握如何构建ASP.NET微信公众号中的用户分组管理web页面的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
分组
缓存
数据
名称
成功
问题
内容
登录
代码
例子
网页
管理
效果
结果
公众
用户
页面
事件
人数
位置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
北京销客互联网科技有限公司
上海品质网络技术产品
应用服务器报价
软件开发人怎么认证
完整的复制数据库 存储结构
网络安全座谈发言
时序数据库工程师需要那些技术
68聊天app服务器在哪里
计算机网络技术高教社
数据库教程增删改查
sql数据库字段说明是啥
大学生确保网络安全的措施
南京实力教育系统开发软件开发
上海瑜鹤网络技术有限公司
软件开发谈心
获取数据库表的列数
蜂巢互联网科技集团
太仓市天一网络技术
珠海 软件开发平台
河南汇聚网络技术有限公司
数据库cap特性
武汉慧炎时代网络技术
专门做软件开发的大公司
fifa22数据库修改
军贸网络技术开发
公安部网络安全保卫总队官方账号
长宁区网络技术咨询创新服务
腾讯网络安全系统国家有用吗
安卓ios同服务器手游
东莞雅思电子厂面试软件开发