侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

asp.net微信开发(高级群发文本)

微信(小程序)  /  管理员 发布于 7年前   192

首先我们先来讲解一下群发文本信息的过程,我个人开发程序是首先要有UI才能下手去写代码,界面如下,

 

看图我们也可以看出首先我们要获取该微信号本月还能群发几条信息,关于怎么计算,就是群发成功一条信息,就在本地数据库存储一条信息,用来计算条数,(这个我相信都会),大于4条就不能发送(这里我已经限制死了,因为服务号每月只能发送4条,多发送也没用,用户只能收到4条,除非使用预览功能,挨个发送,但预览功能也只能发送100次,或许可能使用开发者模式下群发信息可以多发送N次哦,因为我群发了两次之后,再进入到微信公众平台官网后台看到的居然还能群发4条,有点郁闷哦!),群发对象可选择为全部用户或分组用户,和由于节省群发次数,这里我就不测试群发文字信息了,具体参考如下代码:

绑定本月剩余群发条数

 /// <summary>  /// 绑定本月剩余群发条数 /// </summary> private void BindMassCount() { WxMassService wms = new WxMassService(); List<WxMassInfo> wxmaslist = wms.GetMonthMassCount(); //官方微信服务号每月只能群发4条信息,(订阅号每天1条)多余信息,将不会成功推送,这里已经设定为4 this.lbMassCounts.Text = (4 - int.Parse(wxmaslist.Count.ToString())).ToString(); if (wxmaslist.Count >= 4) { this.LinkBtnSubSend.Enabled = false; this.LinkBtnSubSend.Attributes.Add("Onclick", "return confirm('群发信息已达上限!请下月初再试!')"); } else { this.LinkBtnSubSend.Enabled = true; this.LinkBtnSubSend.Attributes.Add("Onclick", "return confirm('您确定要群发此条信息??')"); } }

绑定分组列表

 /// <summary> /// 绑定分组列表 /// </summary> 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.dll文件 JObject jsonObj = JObject.Parse(content); int groupsnum = jsonObj["groups"].Count(); this.DDLGroupList.Items.Clear();//清除 for (int i = 0; i < groupsnum; i++) { this.DDLGroupList.Items.Add(new ListItem(jsonObj["groups"][i]["name"].ToString() + "(" + jsonObj["groups"][i]["count"].ToString() + ")", jsonObj["groups"][i]["id"].ToString())); } } /// <summary> /// 选择群发对象类型,显示隐藏分组列表项 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void DDLMassType_SelectedIndexChanged(object sender, EventArgs e) { if (int.Parse(this.DDLMassType.SelectedValue.ToString()) > 0) { this.DDLGroupList.Visible = true; } else {  this.DDLGroupList.Visible = false; } }

群发

 /// <summary> /// 群发 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void LinkBtnSubSend_Click(object sender, EventArgs e) { //根据单选按钮判断类型,发送 ///如果选择的是文本消息 if (this.RadioBtnList.SelectedValue.ToString().Equals("0")) { if (String.IsNullOrWhiteSpace(this.txtwenben.InnerText.ToString().Trim())) {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('请输入您要群发文本内容!');", true);  return; } if (this.txtwenben.InnerText.ToString().Trim().Length<10) {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('文本内容至少需要10个字符以上!');", true);  return; } WxMassService wms = new WxMassService(); List<WxMassInfo> wxmaslist = wms.GetMonthMassCount(); if (wxmaslist.Count >= 4) {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('本月可群发消息数量已达上限!');", true);  return; } else {  //如何群发类型为全部用户,根据openID列表群发给全部用户,订阅号不可用,服务号认证后可用  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))  {  StringBuilder sbs = new StringBuilder();  sbs.Append(GetAllUserOpenIDList());  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 posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=" + Access_tokento;  ///群发POST数据示例如下:   //  {  // "touser":[  // "OPENID1",  // "OPENID2"  // ],  // "msgtype": "text",  // "text": { "content": "hello from boxer."}  //}  string postData = "{\"touser\":[" + sbs.ToString() +  "],\"msgtype\":\"text\",\"text\":{\"content\":\"" + this.txtwenben.InnerText.ToString() +  "\"}";  string tuwenres = wxs.GetPage(posturl, postData);  //使用前需药引用Newtonsoft.json.dll文件  JObject jsonObj = JObject.Parse(tuwenres);  if (jsonObj["errcode"].ToString().Equals("0"))  {   //群发成功后,保存记录  WxMassInfo wmi = new WxMassInfo();  wmi.ImageUrl = "";  wmi.type = "文本";  wmi.contents = this.txtwenben.InnerText.ToString().Trim();  wmi.title = this.txtwenben.InnerText.ToString().Substring(0, 10) + "...";  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))  {  wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();  }  else  {  wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();  }  wmi.massStatus = "成功";//群发成功之后返回的状态码  wmi.massMessageID = jsonObj["msg_id"].ToString();//群发成功之后返回的消息ID  wmi.massDate = System.DateTime.Now.ToString();  int num = wms.AddWxMassInfo(wmi);  if (num > 0)  {  Session["wmninfo"] = null;  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!数据已保存!');location='WxMassManage.aspx';", true);  return;  }  else  {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!数据保存失败!');", true);  return;  }  }  else  {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务提交失败!!');", true);  return;  }  }  else  {  string group_id = this.DDLGroupList.SelectedValue.ToString();  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 posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=" + Access_tokento;  ///群发POST数据示例如下:   // {  // "filter":{  // "is_to_all":false  // "group_id":"2"  // },  // "text":{  // "content":"CONTENT"  // },  // "msgtype":"text"  //}  //}  string postData = "{\"filter\":{\"is_to_all\":\"false\"\"group_id\":\"" + group_id +  "\"},\"text\":{\"content\":\"" + this.txtwenben.InnerText.ToString() +  "\"},\"msgtype\":\"text\"}";  string tuwenres = wxs.GetPage(posturl, postData);  //使用前需药引用Newtonsoft.json.dll文件  JObject jsonObj = JObject.Parse(tuwenres);  if (jsonObj["errcode"].ToString().Equals("0"))  {  //群发成功后,保存记录  WxMassInfo wmi = new WxMassInfo();  wmi.ImageUrl = "";  wmi.type = "文本";  wmi.contents = this.txtwenben.InnerText.ToString().Trim();  wmi.title = this.txtwenben.InnerText.ToString().Substring(0, 10) + "...";  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))  {  wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();  }  else  {  wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();  }  wmi.massStatus = "成功";//群发成功之后返回的状态码  wmi.massMessageID = jsonObj["msg_id"].ToString();//群发成功之后返回的消息ID  wmi.massDate = System.DateTime.Now.ToString();  int num = wms.AddWxMassInfo(wmi);  if (num > 0)  {  Session["wmninfo"] = null;  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!数据已保存!');location='WxMassManage.aspx';", true);  return;  }  else  {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!数据保存失败!');", true);  return;  }  }  else  {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务提交失败!!');", true);  return;  }  }  } } //如果选择的是图文消息 if (this.RadioBtnList.SelectedValue.ToString().Equals("1")) { if (String.IsNullOrWhiteSpace(this.lbtuwenmedai_id.Text.ToString().Trim())) {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('请选择或新建图文素材再进行群发!');", true);  return; } WxMassService wms = new WxMassService(); List<WxMassInfo> wxmaslist = wms.GetMonthMassCount(); if (wxmaslist.Count >= 4) {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('本月可群发消息数量已达上限!');", true);  return; } else {    //如何群发类型为全部用户,根据openID列表群发给全部用户,订阅号不可用,服务号认证后可用  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))  {  StringBuilder sbs = new StringBuilder();  sbs.Append(GetAllUserOpenIDList());  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 posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=" + Access_tokento;  ///群发POST数据示例如下:   // {  // "touser":[  // "OPENID1",  // "OPENID2"  // ],  // "mpnews":{  // "media_id":"123dsdajkasd231jhksad"  // },  // "msgtype":"mpnews"  //}  string postData = "{\"touser\":[" + sbs.ToString() +  "],\"mpnews\":{\"media_id\":\"" + this.lbtuwenmedai_id.Text.ToString() +  "\"},\"msgtype\":\"mpnews\"}";  string tuwenres = wxs.GetPage(posturl, postData);  //使用前需药引用Newtonsoft.json.dll文件  JObject jsonObj = JObject.Parse(tuwenres);  if (jsonObj["errcode"].ToString().Equals("0"))  {  Session["media_id"] = null;  WxMassInfo wmi = new WxMassInfo();  if (Session["wmninfo"] != null)  {  WxMpNewsInfo wmninfo = Session["wmninfo"] as WxMpNewsInfo;  wmi.title = wmninfo.title.ToString();  wmi.contents = wmninfo.contents.ToString();  wmi.ImageUrl = wmninfo.ImageUrl.ToString();  wmi.type = "图文";  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))  {   wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();  }  else  {   wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();  }  wmi.massStatus = "成功";//群发成功之后返回的状态码  wmi.massMessageID = jsonObj["msg_id"].ToString();//群发成功之后返回的消息ID  wmi.massDate = System.DateTime.Now.ToString();  int num = wms.AddWxMassInfo(wmi);  if (num > 0)  {   Session["wmninfo"] = null;   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!数据已保存!');location='WxMassManage.aspx';", true);   return;  }  else  {   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!数据保存失败!');", true);   return;  }  }  else  {  wmi.title = "";  wmi.contents = "";  wmi.ImageUrl = "";  wmi.type = "图文";  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))  {   wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();  }  else  {   wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();  }  wmi.massStatus = "成功";//群发成功之后返回的状态码  wmi.massMessageID = jsonObj["msg_id"].ToString();//群发成功之后返回的消息ID  wmi.massDate = System.DateTime.Now.ToString();  int num = wms.AddWxMassInfo(wmi);  if (num > 0)  {   Session["wmninfo"] = null;   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!图文部分数据已保存!');location='WxMassManage.aspx';", true);   return;  }  else  {   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!数据保存失败!');", true);   return;  }  }  }  else  {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务提交失败!!');", true);  return;  }  }  else  {  //根据分组进行群发,订阅号和服务号认证后均可用  string group_id = this.DDLGroupList.SelectedValue.ToString();  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 posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=" + Access_tokento;  ///群发POST数据示例如下:   // {  // "filter":{  // "is_to_all":false  // "group_id":"2"  // },  // "mpnews":{  // "media_id":"123dsdajkasd231jhksad"  // },  // "msgtype":"mpnews"  //}  string postData = "{\"filter\":{\"is_to_all\":\"false\"\"group_id\":\""+group_id+  "\"},\"mpnews\":{\"media_id\":\"" + this.lbtuwenmedai_id.Text.ToString() +  "\"},\"msgtype\":\"mpnews\"}";  string tuwenres = wxs.GetPage(posturl, postData);  //使用前需药引用Newtonsoft.json.dll文件  JObject jsonObj = JObject.Parse(tuwenres);  if (jsonObj["errcode"].ToString().Equals("0"))  {  Session["media_id"] = null;  WxMassInfo wmi = new WxMassInfo();  if (Session["wmninfo"] != null)  {  WxMpNewsInfo wmninfo = Session["wmninfo"] as WxMpNewsInfo;  wmi.title = wmninfo.title.ToString();  wmi.contents = wmninfo.contents.ToString();  wmi.ImageUrl = wmninfo.ImageUrl.ToString();  wmi.type = "图文";  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))  {   wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();  }  else  {   wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();  }  wmi.massStatus = "成功";//群发成功之后返回的状态码  wmi.massMessageID = jsonObj["msg_id"].ToString();//群发成功之后返回的消息ID  wmi.massDate = System.DateTime.Now.ToString();  int num = wms.AddWxMassInfo(wmi);  if (num > 0)  {   Session["wmninfo"] = null;   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!数据已保存!');location='WxMassManage.aspx';", true);   return;  }  else  {   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!数据保存失败!');", true);   return;  }  }  else  {  wmi.title = "";  wmi.contents = "";  wmi.ImageUrl = "";  wmi.type = "图文";  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))  {   wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();  }  else  {   wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();  }  wmi.massStatus = "成功";//群发成功之后返回的状态码  wmi.massMessageID = jsonObj["msg_id"].ToString();//群发成功之后返回的消息ID  wmi.massDate = System.DateTime.Now.ToString();  int num = wms.AddWxMassInfo(wmi);  if (num > 0)  {   Session["wmninfo"] = null;   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!图文部分数据已保存!');location='WxMassManage.aspx';", true);   return;  }  else  {   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务已提交成功!!!数据保存失败!');", true);   return;  }  }  }  else  {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群发任务提交失败!!');", true);  return;  }  } } } }

发送前预览

/// <summary> /// 发送前预览 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void LinkBtnSendPreview_Click(object sender, EventArgs e) { 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 posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=" + Access_tokento; ///如果选择的是文本消息 if (this.RadioBtnList.SelectedValue.ToString().Equals("0")) { if (String.IsNullOrWhiteSpace(this.txtwenben.InnerText.ToString().Trim())) {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('请输入您要发送预览的文本内容!');", true);  return; } if (this.txttoUserName.Value.ToString().Trim().Equals("请输入用户微信号")) {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('请输入接收消息的用户微信号!');", true);  return; } //文本消息的json数据{ // "touser":"OPENID", 可改为对微信号预览,例如towxname:zhangsan // "text":{  // "content":"CONTENT"  // },  // "msgtype":"text" //} string postData = "{\"towxname\":\"" + this.txttoUserName.Value.ToString() +   "\",\"text\":{\"content\":\"" + this.txtwenben.InnerText.ToString() +   "\"},\"msgtype\":\"text\"}"; string tuwenres = wxs.GetPage(posturl, postData); //使用前需药引用Newtonsoft.json.dll文件 JObject jsonObj = JObject.Parse(tuwenres); if (jsonObj["errcode"].ToString().Equals("0")) {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('发送预览成功!!');", true);  return; } else {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('发送预览失败!!');", true);  return; } } //如果选择的是图文消息 if (this.RadioBtnList.SelectedValue.ToString().Equals("1")) { if(String.IsNullOrWhiteSpace(this.lbtuwenmedai_id.Text.ToString().Trim())) {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('请选择要预览的图文素材!');", true);  return; } if (this.txttoUserName.Value.ToString().Trim().Equals("请输入用户微信号")) {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('请输入接收消息的用户微信号!');", true);  return; } //图文消息的json数据{ // "touser":"OPENID", 可改为对微信号预览,例如towxname:zhangsan  // "mpnews":{   // "media_id":"123dsdajkasd231jhksad"   // },  // "msgtype":"mpnews"   //} string postData = "{\"towxname\":\"" + this.txttoUserName.Value.ToString() +  "\",\"mpnews\":{\"media_id\":\"" + this.lbtuwenmedai_id.Text.ToString() +  "\"},\"msgtype\":\"mpnews\"}";  string tuwenres = wxs.GetPage(posturl, postData); //使用前需药引用Newtonsoft.json.dll文件 JObject jsonObj = JObject.Parse(tuwenres); if (jsonObj["errcode"].ToString().Equals("0")) {  Session["media_id"] = null;  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('发送预览成功!!');", true);  return; } else {  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('发送预览失败!!');", true);  return; } }  }

关键部分,获取全部用户的openID并串联成字符串:

 /// <summary> /// 获取所有微信用户的OpenID /// </summary> /// <returns></returns> protected string GetAllUserOpenIDList() { StringBuilder sb = new StringBuilder(); 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["AllUserOpenList_content"] as string; if (content == null) { jsonres = "https://api.weixin.qq.com/cgi-bin/user/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("AllUserOpenList_content", content, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration); } //使用前需要引用Newtonsoft.json.dll文件 JObject jsonObj = JObject.Parse(content); if (jsonObj.ToString().Contains("count")) { int totalnum = int.Parse(jsonObj["count"].ToString()); for (int i = 0; i < totalnum; i++) {  sb.Append('"');  sb.Append(jsonObj["data"]["openid"][i].ToString());  sb.Append('"');  sb.Append(","); } } return sb.Remove(sb.ToString().LastIndexOf(","),1).ToString(); }

本文已被整理到了《ASP.NET微信开发教程汇总》,欢迎大家学习阅读。

至此结束,下一章将继续讲解群发图文信息,因群发图文信息之前,需要先上传图文信息所需的素材,获取media_id,所以本章不做介绍,下一章将介绍新建单图文信息并群发,希望大家喜欢。


  • 上一条:
    asp.net微信开发(高级群发图文)
    下一条:
    asp.net微信开发(用户分组管理)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 微信模板消息改版后发送规则记录(微信订阅消息参数值内容限制说明)(1个评论)
    • 微信支付v3对接所需工具及命令(0个评论)
    • 2023年9月1日起:微信小程序必须备案才能上线运营(0个评论)
    • 腾讯官方客服回应了:微信好友上限约10000个!(1个评论)
    • 2023年做微信小程序的老铁注意:新增收费项、微信小程序获取手机号也收费了(2个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2017-10
    • 2018-01
    • 2020-03
    • 2021-06
    • 2021-10
    • 2022-03
    • 2023-02
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客