首页 > 微信小程序 > 微信开发 > 微信公众号中用户分组管理.NET实例详解

微信公众号中用户分组管理.NET实例详解

Y2J
发布: 2017-04-26 10:13:38
原创
2614 人浏览过

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

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(&#39;images/inputbg.gif&#39;);

        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(&#39;images/inputbg.gif&#39;);

        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(&#39;button_bg.png&#39;);

 

        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(&#39;button_bg.png&#39;), url(&#39;button_bg.png&#39;),

                 -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(&#39;button_bg.png&#39;), url(&#39;button_bg.png&#39;),

                 -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(&#39;button_bg.png&#39;), url(&#39;button_bg.png&#39;),

                 -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(&#39;button_bg.png&#39;), url(&#39;button_bg.png&#39;),

                 -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 = &#39;Edit.aspx?id=&#39; + PayNo + "&name=" + name; //转向网页的地址;

        var name = &#39;add&#39;; //网页名称,可为空;

        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, &#39;height=&#39; + iHeight + &#39;,innerHeight=&#39; + iHeight + &#39;,width=&#39; + iWidth + &#39;,innerWidth=&#39; + iWidth + &#39;,top=&#39; + iTop + &#39;,left=&#39; + iLeft + &#39;,status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no&#39;);

      }

 

      $(document).ready(function() {

 

        $(".newGroups").click(function() {

            $("#shownewgroupzhezhaoceng").show();

            $("#shownewgroup").show();

          }),

          $(&#39;.closeloginpage&#39;).click(function() {

            $("#shownewgroupzhezhaoceng").hide();

            $("#shownewgroup").hide();

          });

      });

    </script>

  </head>

  <body>

    <form id="form1" runat="server">

      <p class="g_title">分组管理</p>

      <p id="shownewgroup">

        <p class="closeLogin">

          <span style="float: left; color: #08a5e0; font-size: 18px; text-indent: 5px;">新建分组</span>

          <a class="closeloginpage button blue ">

            关闭

          </a>

        </p>

        <p style="font-size: 12px; height: 40px; color: red; line-height: 40px;">

          30字符以内

 

        </p>

        <input type="text" id="txtgroupsName" name="txtgroupsName" class="inputstyle22" maxlength="30" runat="server" value="分组名称" onfocus="if(value==defaultValue){value=&#39;&#39;;this.style.color=&#39;#000&#39;}" onblur="if(!value){value=defaultValue;this.style.color=&#39;#999&#39;}" style="color: #999"/>

        <asp:LinkButton ID="LinkBtnCreateGroup" runat="server" OnClick="LinkBtnCreateGroup_Click">

          <p style="background-image: url(&#39;images/buttonbg.png&#39;); width: 111px; height: 35px; line-height: 35px; font-weight: bold; float: left; margin-top: 20px; margin-left: 5px; text-align: center; color: #fff;">

            确定创建

          </p>

 

        </asp:LinkButton>

      </p>

      <p id="shownewgroupzhezhaoceng"></p>

      <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=&#39;background-color: <%#(Container.ItemIndex%2 == 0) ? "#fff" : "#ced9ff" %>&#39;>

              <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(&#39;<%# Eval("Group_ID") %>&#39;, &#39;<%# Eval("Group_Name") %>&#39;); ">修改分组名称</a>

                <asp:LinkButton ID="LinkBtnDeleteGroup" runat="server" CommandName="DeleteGroups" CommandArgument=&#39;<%# Eval("Group_ID") %>&#39; CssClass="button blue">删除分组</asp:LinkButton>

 

                <asp:LinkButton ID="LinkBtnSendByGroup" runat="server" CommandName="SendByGroups" CommandArgument=&#39;<%# Eval("Group_ID") %>&#39; CssClass="button blue">此分组消息群发</asp:LinkButton>

 

                <asp:LinkButton ID="LinkBtnMoveUserToGroup" runat="server" CommandName="MoveUserToGroup" CommandArgument=&#39;<%# Eval("Group_ID") %>&#39; CssClass="button blue">移动分组</asp:LinkButton>

              </td>

            </tr>

          </ItemTemplate>

        </asp:Repeater>

      </table>

      <a class="newGroups"><p style="background-image: url(&#39;images/buttonbg.png&#39;); width: 111px; height: 35px; line-height: 35px; margin: 10px auto 10px 28px; font-weight: bold; float: left; text-align: center; color: #fff;"> ┼ 新建分组</p></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(&#39;您确定要删除该分组?删除后该分组内的人员即将恢复到默认分组!&#39;)");

        LinkBtnDeleteGroup.Attributes.Add("OnClick", "return confirm(&#39;您确定要群发消息到该分组?&#39;)");

      }

    }

 

    /// <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(&#39;删除成功!由于缓存问题,您可能需要重新登录才能看到效果!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", 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(&#39;群发成功!由于缓存问题,您可能需要重新登录才能看到效果!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", 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(&#39;移动分组成功!由于缓存问题,您可能需要重新登录才能看到效果!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", 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(&#39;不能为空!&#39;)", 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(&#39;创建成功!如未显示,请退出重新登录即可!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", 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(&#39;images/inputbg.gif&#39;);

        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" ><p style="background-image: url(&#39;images/buttonbg.png&#39;); width: 111px; height: 35px; line-height: 35px; float: left; font-weight: bold; text-align: center; color: #fff;"> 设 置</p></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(&#39;不能为空!&#39;);", true);

       this.txtGroupName.Focus();

       return;

     }

     if (this.txtGroupName.Text.Trim().Length > 30)

     {

       ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;组名称应在30个字符之内!&#39;);", 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(&#39;修改成功!如未正常显示,属缓存问题,请重新登录即可!&#39;);window.open![这里写图片描述](http://img.blog.csdn.net/20161008103126694)er.location.reload();this.close();", true);

     }

     else

     {

       ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;修改失败!&#39;);this.close();",

         true);

     }

   }

 }

登录后复制

buttonbg.png

结果如图:

以上是微信公众号中用户分组管理.NET实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板