服务器之家

服务器之家 > 正文

.NET微信公众号 用户分组管理

时间:2020-03-28 12:59     来源/作者:天风隼

本文实例为大家分享了.NET微信用户分组管理代码,供大家参考,具体内容如下

Model层实体类:

?
1
2
3
4
5
6
7
public class UserList
 {
   public string total { get; set; }
   public string count { get; set; }
   public userlistopenid data { get; set; }
   public string next_openid { get; set; }
 }
?
1
2
3
4
5
public class userlistopenid
{
  public List<string> openid { get; set; }
}
?
1
2
3
4
5
6
public class WxGroupsInfo
 {
   public string Group_ID { get; set; }//分组编号
   public string Group_Name { get; set; }//分组名称
   public string Group_Count { get; set; }//分组人数
 }

WX.aspx内容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WX.aspx.cs" Inherits="test.WX" %>
 
<!DOCTYPE html>
 
<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <style type="text/css">
      .inputstyle {
        height: 35px;
        line-height: 35px;
        text-indent: 5px;
        width: 350px;
        background-image: url('images/inputbg.gif');
        background-repeat: repeat-x;
        border-top: solid 1px #a7b5bc;
        border-left: solid 1px #a7b5bc;
        border-right: solid 1px #ced9df;
        border-bottom: solid 1px #ced9df;
        margin: 15px auto 15px auto;
      }
 
 
      .g_title {
        width: 100%;
        border-bottom: 2px solid #ced9df;
        font-size: 20px;
        font-weight: bold;
        text-align: left;
        text-indent: 5px;
        height: 40px;
        line-height: 40px;
      }
 
      th {
        height: 35px;
        background-color: #31bb34;
        background-repeat: repeat-x;
      }
 
      tr { height: 30px; }
 
      #shownewgroup {
        width: 300px;
        height: 200px;
        background-color: white;
        z-index: 9999;
        border: 2px solid #DDD;
        top: 40%;
        left: 40%;
        background-color: #fff;
        position: fixed;
        margin: -100px auto auto -100px;
        display: none;
      }
 
      #shownewgroupzhezhaoceng {
        height: 200%;
        width: 200%;
        left: 0px;
        top: 0px;
        position: fixed;
        z-index: 9998;
        background: rgb(50, 50, 50);
        background: rgba(0, 0, 0, 0.5);
        display: none;
      }
 
      .closeLogin {
        height: 30px;
        border-bottom: 2px solid #31bb34;
        text-align: right;
        line-height: 30px;
        font-size: 14px;
        font-weight: bold;
      }
 
      a:hover { cursor: pointer; }
 
      .inputstyle22 {
        height: 35px;
        line-height: 35px;
        text-indent: 5px;
        width: 280px;
        background-image: url('images/inputbg.gif');
        background-repeat: repeat-x;
        border-top: solid 1px #a7b5bc;
        border-left: solid 1px #a7b5bc;
        border-right: solid 1px #ced9df;
        border-bottom: solid 1px #ced9df;
        float: left;
        margin: auto 5px auto 5px;
      }
 
 
    </style>
 
    <style type="text/css">
 
      .button {
        font: 15px Calibri, Arial, sans-serif;
        text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.4);
 
        text-decoration: none !important;
        white-space: nowrap;
 
        display: inline-block;
        vertical-align: baseline;
        position: relative;
        cursor: pointer;
        padding: 4px 20px;
 
        background-repeat: no-repeat;
        background-position: bottom left;
        background-image: url('button_bg.png');
 
        background-position: bottom left, top right, 0 0, 0 0;
        background-clip: border-box;
 
        -moz-border-radius: 8px;
        -webkit-border-radius: 8px;
        border-radius: 8px;
 
        -moz-box-shadow: 0 0 1px #fff inset;
        -webkit-box-shadow: 0 0 1px #fff inset;
        box-shadow: 0 0 1px #fff inset;
 
        -webkit-transition: background-position 1s;
        -moz-transition: background-position 1s;
        transition: background-position 1s;
      }
 
 
      .blue.button {
        color: #0f4b6d !important;
 
        border: 1px solid #84acc3 !important;
 
        background-color: #48b5f2;
 
        background-image: url('button_bg.png'), url('button_bg.png'),
                 -moz-radial-gradient(center bottom, circle,
                            rgba(89, 208, 244, 1) 0, rgba(89, 208, 244, 0) 100px),
                 -moz-linear-gradient(#4fbbf7, #3faeeb);
 
        background-image: url('button_bg.png'), url('button_bg.png'),
                 -webkit-gradient(radial, 50% 100%, 0, 50% 100%, 100,
                          from(rgba(89, 208, 244, 1)), to(rgba(89, 208, 244, 0))),
                 -webkit-gradient(linear, 0% 0%, 0% 100%, from(#4fbbf7), to(#3faeeb));
      }
 
      .blue.button:hover {
        background-color: #63c7fe;
 
        background-image: url('button_bg.png'), url('button_bg.png'),
                 -moz-radial-gradient(center bottom, circle,
                            rgba(109, 217, 250, 1) 0, rgba(109, 217, 250, 0) 100px),
                 -moz-linear-gradient(#63c7fe, #58bef7);
 
        background-image: url('button_bg.png'), url('button_bg.png'),
                 -webkit-gradient(radial, 50% 100%, 0, 50% 100%, 100,
                          from(rgba(109, 217, 250, 1)), to(rgba(109, 217, 250, 0))),
                 -webkit-gradient(linear, 0% 0%, 0% 100%, from(#63c7fe), to(#58bef7));
      }
 
 
    </style>
    <script src="js/jquery-1.11.2.min.js"></script>
    <script type="text/javascript">
 
      //修改分组名称调用的函数
      function EditRoster(PayNo, name) {
 
        //alert(PayNo+":"+name);
        var url = 'Edit.aspx?id=' + PayNo + "&name=" + name; //转向网页的地址;
        var name = 'add'; //网页名称,可为空;
        var iWidth = 600; //弹出窗口的宽度;
        var iHeight = 300; //弹出窗口的高度;
        //获得窗口的垂直位置
        var iTop = (window.screen.availHeight - 30 - iHeight) / 2;
        //获得窗口的水平位置
        var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;
        window.open(url, name, 'height=' + iHeight + ',innerHeight=' + iHeight + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + ',status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no');
      }
 
      $(document).ready(function() {
 
        $(".newGroups").click(function() {
            $("#shownewgroupzhezhaoceng").show();
            $("#shownewgroup").show();
          }),
          $('.closeloginpage').click(function() {
            $("#shownewgroupzhezhaoceng").hide();
            $("#shownewgroup").hide();
          });
      });
    </script>
  </head>
  <body>
    <form id="form1" runat="server">
      <div class="g_title">分组管理</div>
      <div id="shownewgroup">
        <div class="closeLogin">
          <span style="float: left; color: #08a5e0; font-size: 18px; text-indent: 5px;">新建分组</span>
          <a class="closeloginpage button blue ">
            关闭
          </a>
        </div>
        <div style="font-size: 12px; height: 40px; color: red; line-height: 40px;">
          30字符以内
 
        </div>
        <input type="text" id="txtgroupsName" name="txtgroupsName" class="inputstyle22" maxlength="30" runat="server" value="分组名称" onfocus="if(value==defaultValue){value='';this.style.color='#000'}" onblur="if(!value){value=defaultValue;this.style.color='#999'}" style="color: #999"/>
        <asp:LinkButton ID="LinkBtnCreateGroup" runat="server" OnClick="LinkBtnCreateGroup_Click">
          <div style="background-image: url('images/buttonbg.png'); width: 111px; height: 35px; line-height: 35px; font-weight: bold; float: left; margin-top: 20px; margin-left: 5px; text-align: center; color: #fff;">
            确定创建
          </div>
 
        </asp:LinkButton>
      </div>
      <div id="shownewgroupzhezhaoceng"></div>
      <table style="width: 1124px; margin: 10px auto 10px auto; border: 1px solid #ecd9df; text-align: center;">
        <asp:Repeater ID="RepeaterGroupList" runat="server" OnItemCommand="RepeaterGroupList_ItemCommand" OnItemDataBound="RepeaterGroupList_ItemDataBound">
          <HeaderTemplate>
            <tr>
              <th>序号</th>
              <th>ID编号</th>
              <th>分组名称</th>
              <th>分组人数</th>
              <th>操作</th>
            </tr>
          </HeaderTemplate>
          <ItemTemplate>
            <tr style='background-color: <%#(Container.ItemIndex%2 == 0) ? "#fff" : "#ced9ff" %>'>
              <td><asp:Label ID="lbXuHao" runat="server" Text=""></asp:Label></td>
              <td><%# Eval("Group_ID") %></td>
              <td><%# Eval("Group_Name") %></td>
              <td><%# Eval("Group_Count") %></td>
              <td>
                <a class="button blue" onclick=" EditRoster('<%# Eval("Group_ID") %>', '<%# Eval("Group_Name") %>'); ">修改分组名称</a>
                <asp:LinkButton ID="LinkBtnDeleteGroup" runat="server" CommandName="DeleteGroups" CommandArgument='<%# Eval("Group_ID") %>' CssClass="button blue">删除分组</asp:LinkButton>
 
                <asp:LinkButton ID="LinkBtnSendByGroup" runat="server" CommandName="SendByGroups" CommandArgument='<%# Eval("Group_ID") %>' CssClass="button blue">此分组消息群发</asp:LinkButton>
 
                <asp:LinkButton ID="LinkBtnMoveUserToGroup" runat="server" CommandName="MoveUserToGroup" CommandArgument='<%# Eval("Group_ID") %>' CssClass="button blue">移动分组</asp:LinkButton>
              </td>
            </tr>
          </ItemTemplate>
        </asp:Repeater>
      </table>
      <a class="newGroups"><div style="background-image: url('images/buttonbg.png'); width: 111px; height: 35px; line-height: 35px; margin: 10px auto 10px 28px; font-weight: bold; float: left; text-align: center; color: #fff;"> ┼ 新建分组</div></a>
    </form>
  </body>
</html>

WX.aspx.cs代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
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();
 
 
      List<WxGroupsInfo> wxgrouplist = new List<WxGroupsInfo>();
 
      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();
    }
 
 
    /// <summary>
    /// 绑定事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    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('您确定要群发消息到该分组?')");
      }
    }
 
    /// <summary>
    /// 执行事件
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    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<UserList>(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);
      }
    }
 
    /// <summary>
    /// 创建分组
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    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代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/// <summary>
  /// 微信服务类
  /// </summary>
  public class WeiXinServer
  {
    /// <summary>
    /// 获取通行证
    /// </summary>
    /// <returns></returns>
    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内容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Edit.aspx.cs" Inherits="test.Edit" %>
 
<html >
  <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
      .inputstyle {
        height: 35px;
        line-height: 35px;
        text-indent: 5px;
        width: 280px;
        background-image: url('images/inputbg.gif');
        background-repeat: repeat-x;
        border-top: solid 1px #a7b5bc;
        border-left: solid 1px #a7b5bc;
        border-right: solid 1px #ced9df;
        border-bottom: solid 1px #ced9df;
        float: left;
        margin: auto 5px auto 5px;
      }
 
    </style>
  </head>
  <body>
    <form id="form1" runat="server">
      <table border="1" style="width: 500px; border-collapse: collapse; margin: 20px auto 20px auto; line-height: 40px;">
        <tr>
          <td style="text-align: right;">分组编号:</td>
          <td> <asp:TextBox ID="txtGroupId" CssClass="inputstyle" Enabled="false" runat="server"></asp:TextBox></td>
        </tr>
        <tr>
          <td style="text-align: right;">分组名称:</td>
          <td>
            <asp:TextBox ID="txtGroupName" CssClass="inputstyle" runat="server"></asp:TextBox>
          </td>
        </tr>
        <tr>
          <td></td>
          <td>
            <asp:LinkButton ID="LinkBtnSet" runat="server" OnClick="LinkBtnSet_Click" ><div style="background-image: url('images/buttonbg.png'); width: 111px; height: 35px; line-height: 35px; float: left; font-weight: bold; text-align: center; color: #fff;"> 设 置</div></asp:LinkButton></td>
        </tr>
      </table>
    </form>
  </body>
</html>

Edit.aspx.cs代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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();
       }
     }
   }
 
   /// <summary>
   /// 设置
   /// </summary>
   /// <param name="sender"></param>
   /// <param name="e"></param>
   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

.NET微信公众号 用户分组管理

结果如图:

.NET微信公众号 用户分组管理

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

相关文章

热门资讯

沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部