asp.net微信开发第六篇----高级群发(文本)
2015-11-11 16:22
399 查看
说到高级群发,微信的参考资料http://mp.weixin.qq.com/wiki/14/0c53fac3bdec3906aaa36987b91d64ea.html
首先我们先来讲解一下群发文本信息的过程,我个人开发程序是首先要有UI才能下手去写代码,界面如下,
View Code
关键部分,获取全部用户的openID并串联成字符串:
至此结束,下一章将继续讲解群发图文信息,因群发图文信息之前,需要先上传图文信息所需的素材,获取media_id,所以本章不做介绍,下一章将介绍新建单图文信息并群发。
首先我们先来讲解一下群发文本信息的过程,我个人开发程序是首先要有UI才能下手去写代码,界面如下,
/// <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; } } }
View Code
关键部分,获取全部用户的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(); }
至此结束,下一章将继续讲解群发图文信息,因群发图文信息之前,需要先上传图文信息所需的素材,获取media_id,所以本章不做介绍,下一章将介绍新建单图文信息并群发。
相关文章推荐
- 【转】asp调用C#编写的DLL发送邮件
- ASP.net状态服务器使用
- ASP.NET MVC架构与实战系列之四:MVC实例演练
- ASP.NET MVC3 通过Url传多个参数方法
- asp.net处理json数据
- 对 ASP.NET 异步编程的一点理解
- ASP.NET MVC 中 ActionResult 和 ViewResult 在使用上的区别
- [Windows Server 2008] ASP.net安装方法
- asp程序无法上传5M以上的文件
- asp.net 获取客户端真实Ip
- 史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~ - Cherbim
- Metasploit概述
- Barcode Professional for ASP.NET使用教程:如何用System.Net.Mail 类创建条码图像的HTML邮件
- Barcode Professional for ASP.NET使用教程:如何用System.Net.Mail 类创建条码图像的HTML邮件
- asp.net新建表单保存和提交的问题解决方案
- asp.net mvc3.0 razor 网站全站脚本、样式统一引用解决放方案
- ASP.NET Highcharts图表
- ASP.NET 小白从零开始建站简易教程 (一)域名、虚拟主机、FTP上传文件
- ASP.NET easyUI--datagrid 通过ajax请求ASP.NET后台数据的分页查询
- asp.net 信息管理系统中的需填写数据的键值对获取方法