┼ 新建分組<\/p><\/a>\r\n <\/form>\r\n <\/body>\r\n<\/html><\/pre>
Code WX.aspx.cs?:<\/p>
public partial class WX : System.Web.UI.Page\r\n {\r\n protected void Page_Load(object sender, EventArgs e)\r\n {\r\n BindGroupList();\r\n this.DataBind();\r\n }\r\n\r\n\r\n private void BindGroupList()\r\n {\r\n WeiXinServer wxs = new WeiXinServer();\r\n\r\n \/\/從緩存讀取accesstoken\r\n string Access_token = Cache[\"Access_token\"] as string;\r\n\r\n if (Access_token == null)\r\n {\r\n \/\/如果為空,重新獲取\r\n Access_token = wxs.GetAccessToken();\r\n \/\/設(shè)置緩存的數(shù)據(jù)7000秒后過期\r\n Cache.Insert(\"Access_token\", Access_token, null, DateTime.Now.AddSeconds(7000),\r\n System.Web.Caching.Cache.NoSlidingExpiration);\r\n }\r\n\r\n string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);\r\n\r\n string jsonres = \"\";\r\n\r\n string content = Cache[\"AllGroups_content\"] as string;\r\n\r\n if (content == null)\r\n {\r\n jsonres = \"https:\/\/api.weixin.qq.com\/cgi-bin\/groups\/get?access_token=\" + Access_tokento;\r\n\r\n HttpWebRequest myRequest = (HttpWebRequest) WebRequest.Create(jsonres);\r\n myRequest.Method = \"GET\";\r\n HttpWebResponse myResponse = (HttpWebResponse) myRequest.GetResponse();\r\n StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);\r\n content = reader.ReadToEnd();\r\n reader.Close();\r\n\r\n \/\/設(shè)置緩存的數(shù)據(jù)7000秒后過期\r\n Cache.Insert(\"AllGroups_content\", content, null, DateTime.Now.AddSeconds(7000),\r\n System.Web.Caching.Cache.NoSlidingExpiration);\r\n }\r\n\r\n \/\/使用前需要引用Newtonsoft.json文件\r\n JObject jsonObj = JObject.Parse(content);\r\n\r\n\r\n int groupsnum = jsonObj[\"groups\"].Count();\r\n\r\n\r\n List wxgrouplist = new List();\r\n\r\n for (int i = 0; i < groupsnum; i++)\r\n {\r\n WxGroupsInfo wginfo = new WxGroupsInfo();\r\n\r\n wginfo.Group_ID = jsonObj[\"groups\"][i][\"id\"].ToString();\r\n\r\n wginfo.Group_Name = jsonObj[\"groups\"][i][\"name\"].ToString();\r\n\r\n wginfo.Group_Count = jsonObj[\"groups\"][i][\"count\"].ToString();\r\n\r\n wxgrouplist.Add(wginfo);\r\n }\r\n\r\n this.RepeaterGroupList.DataSource = wxgrouplist;\r\n this.RepeaterGroupList.DataBind();\r\n }\r\n\r\n\r\n \/\/\/ \r\n \/\/\/ 綁定事件\r\n \/\/\/ <\/summary>\r\n \/\/\/ <\/param>\r\n \/\/\/ <\/param>\r\n protected void RepeaterGroupList_ItemDataBound(object sender, RepeaterItemEventArgs e)\r\n {\r\n if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)\r\n {\r\n Label lbXuHao = e.Item.FindControl(\"lbXuHao\") as Label;\r\n\r\n int num = 1;\r\n\r\n lbXuHao.Text = num.ToString();\r\n\r\n for (int i = 0; i < this.RepeaterGroupList.Items.Count; i++)\r\n {\r\n num += 1;\r\n lbXuHao.Text = num.ToString();\r\n }\r\n\r\n\r\n LinkButton LinkBtnDeleteGroup = e.Item.FindControl(\"LinkBtnDeleteGroup\") as LinkButton;\r\n LinkButton LinkBtnSendByGroup = e.Item.FindControl(\"LinkBtnSendByGroup\") as LinkButton;\r\n\r\n LinkBtnDeleteGroup.Attributes.Add(\"OnClick\", \"return confirm('您確定要刪除該分組?刪除后該分組內(nèi)的人員即將恢復(fù)到默認分組!')\");\r\n LinkBtnDeleteGroup.Attributes.Add(\"OnClick\", \"return confirm('您確定要群發(fā)消息到該分組?')\");\r\n }\r\n }\r\n\r\n \/\/\/ \r\n \/\/\/ 執(zhí)行事件\r\n \/\/\/ <\/summary>\r\n \/\/\/ <\/param>\r\n \/\/\/ <\/param>\r\n protected void RepeaterGroupList_ItemCommand(object source, RepeaterCommandEventArgs e)\r\n { \r\n if (e.CommandName == \"DeleteGroups\")\r\n {\r\n WeiXinServer wxs = new WeiXinServer();\r\n string res = \"\";\r\n\r\n \/\/從緩存讀取accesstoken\r\n string Access_token = Cache[\"Access_token\"] as string;\r\n\r\n if (Access_token == null)\r\n {\r\n \/\/如果為空,重新獲取\r\n Access_token = wxs.GetAccessToken();\r\n\r\n \/\/設(shè)置緩存的數(shù)據(jù)7000秒后過期\r\n Cache.Insert(\"Access_token\", Access_token, null, DateTime.Now.AddSeconds(7000),\r\n System.Web.Caching.Cache.NoSlidingExpiration);\r\n }\r\n\r\n string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);\r\n\r\n\r\n string posturl = \"https:\/\/api.weixin.qq.com\/cgi-bin\/groups\/delete?access_token=\" + Access_tokento;\r\n\r\n\r\n \/\/POST數(shù)據(jù)例子: POST數(shù)據(jù)例子:{\"group\":{\"id\":108}}\r\n\r\n string groupid = e.CommandArgument.ToString();\r\n\r\n string postData = \"{\\\"group\\\":{\\\"id\\\":\\\"\" + groupid + \"\\\"}}\";\r\n\r\n res = wxs.GetPage(posturl, postData);\r\n\r\n ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), \"\",\r\n \"alert('刪除成功!由于緩存問題,您可能需要重新登錄才能看到效果!');location='WxGroupManageList.aspx';\", true);\r\n }\r\n\r\n if (e.CommandName == \"SendByGroups\")\r\n {\r\n WeiXinServer wxs = new WeiXinServer();\r\n string res = \"\";\r\n\r\n \/\/從緩存讀取accesstoken\r\n string Access_token = Cache[\"Access_token\"] as string;\r\n\r\n if (Access_token == null)\r\n {\r\n \/\/如果為空,重新獲取\r\n Access_token = wxs.GetAccessToken();\r\n\r\n \/\/設(shè)置緩存的數(shù)據(jù)7000秒后過期\r\n Cache.Insert(\"Access_token\", Access_token, null, DateTime.Now.AddSeconds(7000),\r\n System.Web.Caching.Cache.NoSlidingExpiration);\r\n }\r\n\r\n string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);\r\n\r\n\r\n string posturl = \"https:\/\/api.weixin.qq.com\/cgi-bin\/message\/mass\/sendall?access_token=\" + Access_tokento;\r\n\r\n string groupid = e.CommandArgument.ToString();\r\n\r\n \/\/string postData = \"{\\\"group\\\":{\\\"id\\\":\\\"\" + groupid.ToString() + \"\\\"}}\";\r\n\r\n JObject postData = new JObject();\r\n JObject filter = new JObject();\r\n filter.Add(\"is_to_all\", false);\r\n filter.Add(\"group_id\", groupid);\r\n\r\n JObject text = new JObject();\r\n text.Add(\"content\", \"測試內(nèi)容!\");\r\n\r\n postData.Add(\"filter\", filter);\r\n postData.Add(\"text\", text);\r\n postData.Add(\"msgtype\", \"text\"); \r\n\r\n res = wxs.GetPage(posturl, postData.ToString());\r\n\r\n ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), \"\",\r\n \"alert('群發(fā)成功!由于緩存問題,您可能需要重新登錄才能看到效果!');location='WxGroupManageList.aspx';\", true);\r\n }\r\n\r\n if (e.CommandName == \"MoveUserToGroup\")\r\n {\r\n WeiXinServer wxs = new WeiXinServer();\r\n string res = \"\";\r\n string Access_token = Cache[\"Access_token\"] as string;\r\n\r\n if (Access_token == null)\r\n {\r\n Access_token = wxs.GetAccessToken();\r\n Cache.Insert(\"Access_token\", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);\r\n }\r\n\r\n string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);\r\n string posturl = \"https:\/\/api.weixin.qq.com\/cgi-bin\/groups\/members\/update?access_token=\" + Access_tokento;\r\n\r\n string UserListurl = \"https:\/\/api.weixin.qq.com\/cgi-bin\/user\/get?access_token=\" + Access_tokento + \"&next_openid=\";\r\n\r\n\r\n \/\/{\"total\":2,\"count\":2,\"data\":{\"openid\":[\"\",\"OPENID1\",\"OPENID2\"]},\"next_openid\":\"NEXT_OPENID\"}\r\n res = wxs.GetPage(UserListurl,\"\");\r\n UserList userList= JsonConvert.DeserializeObject(res);\r\n String openid=userList.data.openid.FirstOrDefault();\r\n int togroup_id = 101;\/\/輸入分組ID\r\n string postData = \"{\\\"openid\\\":\\\"\" + openid + \"\\\",\\\"to_groupid\\\":\" + togroup_id + \"}\";\r\n res = wxs.GetPage(posturl, postData);\r\n\r\n ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), \"\",\r\n \"alert('移動分組成功!由于緩存問題,您可能需要重新登錄才能看到效果!');location='WxGroupManageList.aspx';\", true);\r\n }\r\n }\r\n\r\n \/\/\/ \r\n \/\/\/ 創(chuàng)建分組\r\n \/\/\/ <\/summary>\r\n \/\/\/ <\/param>\r\n \/\/\/ <\/param>\r\n protected void LinkBtnCreateGroup_Click(object sender, EventArgs e)\r\n {\r\n if (this.txtgroupsName.Value.Equals(\"分組名稱\"))\r\n {\r\n \/\/\/\/\r\n ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), \"\", \"alert('不能為空!')\", true);\r\n this.txtgroupsName.Focus();\r\n return;\r\n }\r\n\r\n\r\n WeiXinServer wxs = new WeiXinServer();\r\n string res = \"\";\r\n\r\n \/\/\/從緩存讀取accesstoken\r\n string Access_token = Cache[\"Access_token\"] as string;\r\n\r\n if (Access_token == null)\r\n {\r\n \/\/如果為空,重新獲取\r\n Access_token = wxs.GetAccessToken();\r\n\r\n \/\/設(shè)置緩存的數(shù)據(jù)7000秒后過期\r\n Cache.Insert(\"Access_token\", Access_token, null, DateTime.Now.AddSeconds(7000),\r\n System.Web.Caching.Cache.NoSlidingExpiration);\r\n }\r\n\r\n string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);\r\n\r\n\r\n string posturl = \"https:\/\/api.weixin.qq.com\/cgi-bin\/groups\/create?access_token=\" + Access_tokento;\r\n\r\n string postData = \"{\\\"group\\\":{\\\"name\\\":\\\"\" + this.txtgroupsName.Value.ToString().Trim() + \"\\\"}}\"; \r\n res = wxs.GetPage(posturl, postData); \r\n ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), \"\",\r\n \"alert('創(chuàng)建成功!如未顯示,請退出重新登錄即可!');location='WxGroupManageList.aspx';\", true);\r\n }\r\n }<\/pre> Code WeiXinServer.cs?:<\/p>
\/\/\/ \r\n \/\/\/ 微信服務(wù)類\r\n \/\/\/ <\/summary>\r\n public class WeiXinServer\r\n {\r\n \/\/\/ \r\n \/\/\/ 獲取通行證\r\n \/\/\/ <\/summary>\r\n \/\/\/ <\/returns>\r\n public string GetAccessToken()\r\n {\r\n string url_token =\r\n \"https:\/\/api.weixin.qq.com\/cgi-bin\/token?grant_type=client_credential&appid=wx3eb5bf1290db2ca0&secret=e6013be0a7338c7d3e02877db116e231\";\r\n HttpWebRequest myRequest = (HttpWebRequest) WebRequest.Create(url_token);\r\n myRequest.Method = \"GET\";\r\n HttpWebResponse myResponse = (HttpWebResponse) myRequest.GetResponse();\r\n StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);\r\n string content = reader.ReadToEnd();\r\n reader.Close();\r\n return content;\r\n }\r\n\r\n public string GetPage(string p, string postData)\r\n {\r\n Stream outstream = null;\r\n Stream instream = null;\r\n StreamReader sr = null;\r\n HttpWebResponse response = null;\r\n HttpWebRequest request = null;\r\n Encoding encoding = Encoding.UTF8;\r\n byte[] data = encoding.GetBytes(postData);\r\n \/\/ 準(zhǔn)備請求...\r\n try\r\n {\r\n \/\/ 設(shè)置參數(shù)\r\n request = WebRequest.Create(p) as HttpWebRequest;\r\n CookieContainer cookieContainer = new CookieContainer();\r\n request.CookieContainer = cookieContainer;\r\n request.AllowAutoRedirect = true;\r\n request.Method = \"POST\";\r\n request.ContentType = \"application\/x-www-form-urlencoded\";\r\n request.ContentLength = data.Length;\r\n outstream = request.GetRequestStream();\r\n outstream.Write(data, 0, data.Length);\r\n outstream.Close();\r\n \/\/發(fā)送請求并獲取相應(yīng)回應(yīng)數(shù)據(jù)\r\n response = request.GetResponse() as HttpWebResponse;\r\n \/\/直到request.GetResponse()程序才開始向目標(biāo)網(wǎng)頁發(fā)送Post請求\r\n instream = response.GetResponseStream();\r\n sr = new StreamReader(instream, encoding);\r\n \/\/返回結(jié)果網(wǎng)頁(html)代碼\r\n string content = sr.ReadToEnd();\r\n string err = string.Empty;\r\n return content;\r\n }\r\n catch (Exception ex)\r\n {\r\n string err = ex.Message;\r\n return string.Empty;\r\n }\r\n }\r\n }<\/pre>Contenu Edit.aspx?:<\/p>
<%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeBehind=\"Edit.aspx.cs\" Inherits=\"test.Edit\" %>\r\n\r\n\r\n \r\n \r\n <\/title>\r\n