真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文

這篇文章主要為大家展示了“asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文”這篇文章吧。

在科爾沁等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作專業(yè)公司,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)整合營銷推廣,外貿(mào)網(wǎng)站建設(shè),科爾沁網(wǎng)站建設(shè)費(fèi)用合理。

界面如下:

asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文

我們先看從素材庫中獲取圖文素材的代碼,界面:

asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文

素材列表,我是使用的repeater控件,

前臺代碼如下:

 
  
  選擇素材
  新建圖文素材
    

                 確認(rèn)選擇

    刷新

    刪除素材

    

                                                            
  • <%# Eval("title") %>
  •              
                                                                       
                 本類型素材總數(shù)量為:      本次獲取的素材數(shù)量為:    

      

       
         

     

     

    后臺代碼如下:

     /// 
     /// 綁定圖文素材列表
     /// 
     private void BindNewsSucaiList()
     {
      WeiXinServer wxs = new WeiXinServer();
      string res = "";
    
      ///從緩存讀取accesstoken
      string Access_token = Cache["Access_token"] as string;
    
      if (Access_token == null)
      {
      //如果為空,重新獲取
      Access_token = wxs.GetAccessToken();
    
      //設(shè)置緩存的數(shù)據(jù)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/material/batchget_material?access_token=" + Access_tokento;
    
    
      //POST數(shù)據(jù)例子: POST數(shù)據(jù)例子:{"type":TYPE,"offset":OFFSET,"count":COUNT}
    
      string postData = "{\"type\":\"news\",\"offset\":\"0\",\"count\":\"20\"}";
    
      res = wxs.GetPage(posturl, postData);
    
      //使用前需要引用Newtonsoft.json.dll文件
      JObject jsonObj = JObject.Parse(res);
    
      int groupsnum = jsonObj["item"].Count();
    
      List newssucaiitemlist = new List();
      List WxNewsSuCaiItemlist = new List();
      for (int i = 0; i < groupsnum; i++)
      {
      WxNewsSucaiIteminfo newssucaiitem = new WxNewsSucaiIteminfo();
      newssucaiitem.media_id = jsonObj["item"][i]["media_id"].ToString();
      newssucaiitem.update_time = jsonObj["item"][i]["update_time"].ToString();
      newssucaiitem.total_count = jsonObj["total_count"].ToString();
      newssucaiitem.item_count = jsonObj["item_count"].ToString();
    
      newssucaiitemlist.Add(newssucaiitem);
      int news_itemcount = jsonObj["item"][i]["content"]["news_item"].Count();
      if (news_itemcount > 0)
      {
       for (int j = 0; j < news_itemcount; j++)
       {
       WxNewsSuCaiItemlistinfo wnscilinfo = new WxNewsSuCaiItemlistinfo();
       wnscilinfo.title = jsonObj["item"][i]["content"]["news_item"][j]["title"].ToString();
       wnscilinfo.thumb_media_id = jsonObj["item"][i]["content"]["news_item"][j]["thumb_media_id"].ToString();
       wnscilinfo.show_cover_pic = int.Parse(jsonObj["item"][i]["content"]["news_item"][j]["show_cover_pic"].ToString());
       wnscilinfo.author = jsonObj["item"][i]["content"]["news_item"][j]["author"].ToString();
       wnscilinfo.digest = jsonObj["item"][i]["content"]["news_item"][j]["digest"].ToString();
       wnscilinfo.content = jsonObj["item"][i]["content"]["news_item"][j]["content"].ToString();
       wnscilinfo.url = jsonObj["item"][i]["content"]["news_item"][j]["url"].ToString();
       wnscilinfo.content_source_url = jsonObj["item"][i]["content"]["news_item"][j]["content_source_url"].ToString();
       wnscilinfo.media_id = newssucaiitem.media_id.ToString();
       WxNewsSuCaiItemlist.Add(wnscilinfo);
       }
      }
      }
      Session["WxNewsSuCaiItemlist"] = WxNewsSuCaiItemlist;
      this.Repeatersucailist.DataSource = newssucaiitemlist;
      this.Repeatersucailist.DataBind();
     }

    再來看看,新建單圖文信息界面:

    asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文

    asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文

    新建單圖文上傳封面,刪除封面的代碼如下:

     /// 
     /// 
     /// 上傳圖片文件
     /// 
     /// 
     protected void LinkBtnFileUploadImg_Click(object sender, EventArgs e)
     {
      if (this.FileUploadImg.HasFile)
      {
      string fileContentType = FileUploadImg.PostedFile.ContentType;
      if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/png" || fileContentType == "image/x-png" || fileContentType == "image/jpeg"
       || fileContentType == "image/pjpeg")
      {
       int fileSize = this.FileUploadImg.PostedFile.ContentLength;
    
       if (fileSize <=2097152)
       {
       string fileName = this.FileUploadImg.PostedFile.FileName; 
       // 客戶端文件路徑
       string filepath = FileUploadImg.PostedFile.FileName; //得到的是文件的完整路徑,包括文件名,如:C:\Documents and Settings\Administrator\My Documents\My Pictures\20022775_m.jpg 
       //string filepath = FileUpload1.FileName;  //得到上傳的文件名20022775_m.jpg 
       string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);//20022775_m.jpg 
       string serverpath = Server.MapPath("~/WeiXinImg/") + filename;//取得文件在服務(wù)器上保存的位置C:\Inetpub\wwwroot\WebSite1\images\20022775_m.jpg 
    
       this.ImgTuWen.ImageUrl = "~/WeiXinImg/" + FileUploadImg.FileName;
       this.ImgTuWen2.Visible = true;
       this.ImgTuWen2.ImageUrl = "~/WeiXinImg/" + FileUploadImg.FileName;
       this.FileUploadImg.PostedFile.SaveAs(serverpath);//將上傳的文件另存為 
       this.LinkBtnDeleteImg.Visible = true;
       Session["fileNameimg"] = this.FileUploadImg.PostedFile.FileName;
    
    
       //上傳臨時(shí)圖片素材至微信服務(wù)器,3天后微信服務(wù)器會自動刪除
    
       WeiXinServer wxs = new WeiXinServer();
    
       ///從緩存讀取accesstoken
       string Access_token = Cache["Access_token"] as string;
    
       if (Access_token == null)
       {
        //如果為空,重新獲取
        Access_token = wxs.GetAccessToken();
    
        //設(shè)置緩存的數(shù)據(jù)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);
    
    
       //WebClient wx_upload = new WebClient();
       //wx_upload.Credentials = CredentialCache.DefaultCredentials;
       string url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", Access_tokento, "image");
    
       string result = HttpUploadFile(url, serverpath);
    
       if (result.Contains("media_id"))
       {
        //使用前需要引用Newtonsoft.json.dll文件
        JObject jsonObj = JObject.Parse(result);
    
        Session["imgmedia_id"] = jsonObj["media_id"].ToString();
       }
    
    
       Response.Write("");
       }
       else
       {
       Response.Write("");
       }
       
      }
      else
      {
       Response.Write("");
      }
      }
      else
      {
      Response.Write("");
      }
     }
     ///  
     /// Http上傳文件 
     ///  
     public static string HttpUploadFile(string url, string path)
     {
      // 設(shè)置參數(shù) 
      HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
      CookieContainer cookieContainer = new CookieContainer();
      request.CookieContainer = cookieContainer;
      request.AllowAutoRedirect = true;
      request.Method = "POST";
      string boundary = DateTime.Now.Ticks.ToString("X"); // 隨機(jī)分隔線 
      request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
      byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
      byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
    
      int pos = path.LastIndexOf("\\");
      string fileName = path.Substring(pos + 1);
    
      //請求頭部信息 
      StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName));
      byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString());
    
      FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
      byte[] bArr = new byte[fs.Length];
      fs.Read(bArr, 0, bArr.Length);
      fs.Close();
    
      Stream postStream = request.GetRequestStream();
      postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
      postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
      postStream.Write(bArr, 0, bArr.Length);
      postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
      postStream.Close();
    
      //發(fā)送請求并獲取相應(yīng)回應(yīng)數(shù)據(jù) 
      HttpWebResponse response = request.GetResponse() as HttpWebResponse;
      //直到request.GetResponse()程序才開始向目標(biāo)網(wǎng)頁發(fā)送Post請求 
      Stream instream = response.GetResponseStream();
      StreamReader sr = new StreamReader(instream, Encoding.UTF8);
      //返回結(jié)果網(wǎng)頁(html)代碼 
      string content = sr.ReadToEnd();
      return content;
     } 
     /// 
     /// 刪除圖片
     /// 
     /// 
     /// 
     protected void LinkBtnDeleteImg_Click(object sender, EventArgs e)
     {
      string filename = Session["fileNameimg"].ToString();
    
      if (!string.IsNullOrEmpty(filename))//確保picPath有值并且不為空。
      {
      
      string serverpath = Server.MapPath("~/WeiXinImg/") + filename;//取得文件在服務(wù)器上保存的位置C:\Inetpub\wwwroot\WebSite1\images\20022775_m.jpg 
    
      if (File.Exists(serverpath))
      {
       try
       {
       File.Delete(serverpath);
       this.ImgTuWen.ImageUrl = "weixinimg/fengmiandefault.jpg";
       this.ImgTuWen2.Visible = false;
       this.ImgTuWen2.ImageUrl = "";
       Session["fileNameimg"] = null;
       this.LinkBtnDeleteImg.Visible = false;
       }
       catch(Exception ex)
       {
       //錯(cuò)誤處理:
       Response.Write(ex.Message.ToString());
       }
      }
      }
     }

    新建單圖文預(yù)覽代碼如下:

     /// 
     /// 預(yù)覽圖文消息
     /// 
     /// 
     /// 
     protected void LinkBtnSendPreview_Click(object sender, EventArgs e)
     {
      Session["media_id"] = null;
    
      //非空驗(yàn)證
      if (String.IsNullOrWhiteSpace(this.txttuwen_title.Value.ToString()))
      {
      ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('請輸入圖文標(biāo)題!');", true);
      this.txttuwen_title.Focus();
      return;
      }
      if (this.ImgTuWen2.ImageUrl.ToString().Equals(""))
      {
      ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('必須上傳一張圖片!');", true);
      this.ImgTuWen2.Focus();
      return;
      }
      if (String.IsNullOrWhiteSpace(this.tbContent.InnerText.ToString()))
      {
      ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('請輸入正文內(nèi)容!');", true);
      this.tbContent.Focus();
      return;
      }
    
      //對各項(xiàng)進(jìn)行賦值
      WeiXinServer wxs = new WeiXinServer();
    
      ///從緩存讀取accesstoken
      string Access_token = Cache["Access_token"] as string;
    
      if (Access_token == null)
      {
      //如果為空,重新獲取
      Access_token = wxs.GetAccessToken();
    
      //設(shè)置緩存的數(shù)據(jù)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);
    
    
    
      //POST數(shù)據(jù)例子: POST數(shù)據(jù)例子:
      //{
      // "articles": [{
      // "title": TITLE,
      // "thumb_media_id": THUMB_MEDIA_ID,
      // "author": AUTHOR,
      // "digest": DIGEST,
      // "show_cover_pic": SHOW_COVER_PIC(0 / 1),
      // "content": CONTENT,
      // "content_source_url": CONTENT_SOURCE_URL
      // },
      // //若新增的是多圖文素材,則此處應(yīng)還有幾段articles結(jié)構(gòu)
      // ]
      //}
    
      string isshow_cover_pic = "";
      if (this.CheckFengMianShow.Checked)
      {
      isshow_cover_pic = "1";
      }
      else
      {
      isshow_cover_pic = "0";
      }
    
    
      string description = NoHTML(this.tbContent.InnerText.ToString());
    
      
      string postData = "{\"articles\":[{\"title\":\"" + this.txttuwen_title.Value.ToString() +
      "\",\"thumb_media_id\":\"" + Session["imgmedia_id"].ToString() +
      "\",\"author\":\"" + this.txttuwen_author.Value.ToString() +
      "\",\"digest\":\"" + this.txtzhaiyao.InnerText.ToString() +
       "\",\"show_cover_pic\":\"" + isshow_cover_pic +
       "\",\"content\":\"" + description +
       "\",\"content_source_url\":\"" + this.txtYuanWenUrl.Text.ToString() +
       "\"}]}";
    
      string posturl = string.Format("https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token={0}", Access_tokento);
    
      string jsonres = PostUrl(posturl, postData);
    
    
      if (jsonres.Contains("media_id"))
      {
      //使用前需要引用Newtonsoft.json.dll文件
      JObject jsonObj = JObject.Parse(jsonres);
    
      if (this.txttoUserName.Value.ToString().Trim().Equals("請輸入用戶微信號"))
      {
       ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('請輸入接收消息的用戶微信號!');", true);
       return;
      }
    
    
    
      string posturls = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=" + Access_tokento;
    
      //預(yù)覽圖文消息的json數(shù)據(jù){
      // "touser":"OPENID", 可改為對微信號預(yù)覽,例如towxname:zhangsan
      // "mpnews":{  
      //  "media_id":"123dsdajkasd231jhksad"  
      //  },
      // "msgtype":"mpnews" 
      //}
      string postDatas = "{\"towxname\":\"" + this.txttoUserName.Value.ToString() +
         "\",\"mpnews\":{\"media_id\":\"" + jsonObj["media_id"].ToString() +
         "\"},\"msgtype\":\"mpnews\"}";
    
      string tuwenres = wxs.GetPage(posturls, postDatas);
    
      //使用前需藥引用Newtonsoft.json.dll文件
      JObject jsonObjss = JObject.Parse(tuwenres);
    
      if (jsonObjss["errcode"].ToString().Equals("0"))
      {
       ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('發(fā)送預(yù)覽成功!!');", true);
       return;
      }
      else
      {
       ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('發(fā)送預(yù)覽失?。?!');", true);
       return;
      }
      }
     }
     public static string NoHTML(string Htmlstring)
     {
    
      //刪除腳本 
      Htmlstring = Regex.Replace(Htmlstring, @"]*?>.*?", "", RegexOptions.IgnoreCase);
    
      //替換標(biāo)簽
      Htmlstring = Htmlstring.Replace("\r\n", " ");
      Htmlstring = Htmlstring.Replace("\"", "'");
      Htmlstring = Htmlstring.Replace(" ", " ");
      return Htmlstring;
    
     }

    單擊確定按鈕代碼如下:

     /// 
     /// 確認(rèn)選擇
     /// 
     /// 
     /// 
     protected void LinkBtnSubSave_Click(object sender, EventArgs e)
     {
      Session["media_id"] = null;
      //非空驗(yàn)證
      if (String.IsNullOrWhiteSpace(this.txttuwen_title.Value.ToString()))
      {
      ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('請輸入圖文標(biāo)題!');", true);
      return;
      }
      if (this.ImgTuWen2.ImageUrl.ToString().Equals(""))
      {
      ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('必須上傳一張圖片!');", true);
      return;
      }
      if (String.IsNullOrWhiteSpace(this.tbContent.InnerText.ToString()))
      {
      ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('請輸入正文內(nèi)容!');", true);
      return;
      }
    
      //對各項(xiàng)進(jìn)行賦值
      WeiXinServer wxs = new WeiXinServer();
    
      ///從緩存讀取accesstoken
      string Access_token = Cache["Access_token"] as string;
    
      if (Access_token == null)
      {
      //如果為空,重新獲取
      Access_token = wxs.GetAccessToken();
    
      //設(shè)置緩存的數(shù)據(jù)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);
    
    
    
      //POST數(shù)據(jù)例子: POST數(shù)據(jù)例子:
      //{
      // "articles": [{
      // "title": TITLE,
      // "thumb_media_id": THUMB_MEDIA_ID,
      // "author": AUTHOR,
      // "digest": DIGEST,
      // "show_cover_pic": SHOW_COVER_PIC(0 / 1),
      // "content": CONTENT,
      // "content_source_url": CONTENT_SOURCE_URL
      // },
      // //若新增的是多圖文素材,則此處應(yīng)還有幾段articles結(jié)構(gòu)
      // ]
      //}
    
      string isshow_cover_pic = "";
      if (this.CheckFengMianShow.Checked)
      {
      isshow_cover_pic = "1";
      }
      else
      {
      isshow_cover_pic = "0";
      }
    
      string description = NoHTML(this.tbContent.InnerText.ToString());
    
    
      string postData = "{\"articles\":[{\"title\":\"" + this.txttuwen_title.Value.ToString() +
      "\",\"thumb_media_id\":\"" + Session["imgmedia_id"].ToString() +
      "\",\"author\":\"" + this.txttuwen_author.Value.ToString() +
      "\",\"digest\":\"" + this.txtzhaiyao.InnerText.ToString() +
       "\",\"show_cover_pic\":\"" + isshow_cover_pic +
       "\",\"content\":\"" + description +
       "\",\"content_source_url\":\"" + this.txtYuanWenUrl.Text.ToString() +
       "\"}]}";
    
      string posturl = string.Format("https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token={0}", Access_tokento);
    
      string jsonres = PostUrl(posturl, postData);
    
    
      if (jsonres.Contains("media_id"))
      {
      //使用前需要引用Newtonsoft.json.dll文件
      JObject jsonObj = JObject.Parse(jsonres);
    
      WxMpNewsInfo wmninfo = new WxMpNewsInfo();
      wmninfo.title = this.txttuwen_title.Value.ToString();
      wmninfo.contents = description.ToString();
      wmninfo.ImageUrl = this.ImgTuWen.ImageUrl.ToString();
      Session["wmninfo"] = wmninfo;
      Response.Redirect("WxMassManage.aspx?media_id=" + jsonObj["media_id"].ToString());
      }
     }
     ///  
     /// 請求Url,發(fā)送數(shù)據(jù) 
     ///  
     public static string PostUrl(string url, string postData)
     {
      byte[] data = Encoding.UTF8.GetBytes(postData);
    
      // 設(shè)置參數(shù) 
      HttpWebRequest request = WebRequest.Create(url) 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;
      Stream outstream = request.GetRequestStream();
      outstream.Write(data, 0, data.Length);
      outstream.Close();
    
      //發(fā)送請求并獲取相應(yīng)回應(yīng)數(shù)據(jù) 
      HttpWebResponse response = request.GetResponse() as HttpWebResponse;
      //直到request.GetResponse()程序才開始向目標(biāo)網(wǎng)頁發(fā)送Post請求 
      Stream instream = response.GetResponseStream();
      StreamReader sr = new StreamReader(instream, Encoding.UTF8);
      //返回結(jié)果網(wǎng)頁(html)代碼 
      string content = sr.ReadToEnd();
      return content;
     }

    Response.Redirect("WxMassManage.aspx?media_id=" + jsonObj["media_id"].ToString());
    這句代碼就是將上傳圖文后得到的media_Id參數(shù)傳送到群發(fā)界面,群發(fā)界面接收代碼如下:

     protected void Page_Load(object sender, EventArgs e)
     {
      if(!Page.IsPostBack)
      {
      BindNewsSucaiList();//綁定素材列表
      BindGroupList();//綁定分組列表
      BindMassCount();//綁定本月已群發(fā)條數(shù)
      this.DataBind();
      if (Request.QueryString["media_id"] != null)
      {
       this.RadioBtnList.SelectedValue = "1";
       this.showExpress.Visible = false;
       this.txtwenben.Visible = false;
       this.tuwen.Visible = true;
       this.tuwenxuan.Visible = false;
       this.tuwenjian.Visible = false;
       this.lbtuwenmedai_id.Visible = true;
       this.lbtuwenmedai_id.Text = Request.QueryString["media_id"].ToString();
       this.LinkBtndeletetuwen.Visible = true;
       this.Imageyixuan.Visible = true;
      }
      }
     }

    最終界面如下:

    asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文

    我這里只接收了一個(gè)media_id值,相對于做的簡單,直接將值賦值給了一個(gè)label用于顯示,也可以做成像官網(wǎng)那樣,確定選擇后,按照圖文樣式顯示.

    asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文

    最后一步:群發(fā)按鈕代碼:其實(shí)上一章已經(jīng)將代碼貼出去了,這一章,我就單獨(dú)貼一遍吧。

     /// 
      /// 群發(fā)
      /// 
      /// 
      /// 
      protected void LinkBtnSubSend_Click(object sender, EventArgs e)
      {
       //根據(jù)單選按鈕判斷類型,//如果選擇的是圖文消息
       if (this.RadioBtnList.SelectedValue.ToString().Equals("1"))
       {
        if (String.IsNullOrWhiteSpace(this.lbtuwenmedai_id.Text.ToString().Trim()))
        {
         ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('請選擇或新建圖文素材再進(jìn)行群發(fā)!');", true);
         return;
        }
    
        WxMassService wms = new WxMassService();
    
        List wxmaslist = wms.GetMonthMassCount();
    
        if (wxmaslist.Count >= 4)
        {
         ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('本月可群發(fā)消息數(shù)量已達(dá)上限!');", true);
         return;
        }
        else
        {
         
         //如何群發(fā)類型為全部用戶,根據(jù)openID列表群發(fā)給全部用戶,訂閱號不可用,服務(wù)號認(rèn)證后可用
         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();
    
           //設(shè)置緩存的數(shù)據(jù)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;
    
          ///群發(fā)POST數(shù)據(jù)示例如下: 
          // {
          // "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 = "成功";//群發(fā)成功之后返回的狀態(tài)碼
            wmi.massMessageID = jsonObj["msg_id"].ToString();//群發(fā)成功之后返回的消息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('群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)已保存!');location='WxMassManage.aspx';", true);
             return;
            }
            else
            {
             ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)保存失?。?#39;);", 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 = "成功";//群發(fā)成功之后返回的狀態(tài)碼
            wmi.massMessageID = jsonObj["msg_id"].ToString();//群發(fā)成功之后返回的消息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('群發(fā)任務(wù)已提交成功?。?!圖文部分?jǐn)?shù)據(jù)已保存!');location='WxMassManage.aspx';", true);
             return;
            }
            else
            {
             ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)保存失?。?#39;);", true);
             return;
            }
           }
          }
          else
          {
           ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群發(fā)任務(wù)提交失?。?!');", true);
           return;
          }
    
    
         }
         else
         {
          //根據(jù)分組進(jìn)行群發(fā),訂閱號和服務(wù)號認(rèn)證后均可用
    
          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();
    
           //設(shè)置緩存的數(shù)據(jù)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;
    
          ///群發(fā)POST數(shù)據(jù)示例如下: 
          // {
          // "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 = "成功";//群發(fā)成功之后返回的狀態(tài)碼
            wmi.massMessageID = jsonObj["msg_id"].ToString();//群發(fā)成功之后返回的消息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('群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)已保存!');location='WxMassManage.aspx';", true);
             return;
            }
            else
            {
             ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)保存失??!');", 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 = "成功";//群發(fā)成功之后返回的狀態(tài)碼
            wmi.massMessageID = jsonObj["msg_id"].ToString();//群發(fā)成功之后返回的消息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('群發(fā)任務(wù)已提交成功?。?!圖文部分?jǐn)?shù)據(jù)已保存!');location='WxMassManage.aspx';", true);
             return;
            }
            else
            {
             ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)保存失??!');", true);
             return;
            }
           }
          }
          else
          {
           ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('群發(fā)任務(wù)提交失?。?!');", true);
           return;
          }
         }
        }
       }
      }

    為什么叫群發(fā)任務(wù)提交成功或失敗,因?yàn)閷⑿畔⑻峤唤o微信服務(wù)器,微信服務(wù)器還需審核,審核過程中也有可能審核不通過,不給于群發(fā),所以我起名叫這個(gè),嘿嘿,隨便你們怎么起。。。。。

    asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文

    至此群發(fā)圖文信息功能,已完畢,最后是群發(fā)記錄,還記得上一章提到的群發(fā)成功之后要在本地保存記錄嗎,保存記錄的原因,用于計(jì)算當(dāng)月已群發(fā)幾條信息,另外還有一個(gè)功能就是,群發(fā)成功之后,會得到一個(gè)消息msgid,根據(jù)這個(gè)ID可以對已經(jīng)發(fā)送成功的信息進(jìn)行撤銷(刪除)操作,關(guān)于撤銷操作:微信官方規(guī)定,對群發(fā)成功的圖文和視頻消息,半個(gè)小時(shí)之內(nèi)可以進(jìn)行刪除操作,其他消息一經(jīng)群發(fā)成功概不支持此操作。截圖如下:

    asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文

    該類用于存儲已群發(fā)記錄的實(shí)體類

     /// 
     /// 微信已群發(fā)消息實(shí)體類,用于記錄已群發(fā)消息的條數(shù),信息實(shí)體
     /// 
     public class WxMassInfo
     {
      public int WxMassNo { get; set; }//群發(fā)消息編號,數(shù)據(jù)庫自增列
    
      public string title { get; set; }//圖文消息的標(biāo)題,若消息是文本類型,此項(xiàng)不顯示
    
      public string ImageUrl { get; set; }//圖片地址,若消息是文本類型,此項(xiàng)不顯示
    
      public string type { get; set; }//消息的類型,文本,圖文,圖片,語音,視頻
    
      public string contents { get; set; }//文本消息的內(nèi)容,圖文消息的正文
    
      public string massObject { get; set; }//群發(fā)對象
    
      public string massStatus { get; set; }//群發(fā)狀態(tài)
    
      public string massMessageID{ get; set; }//群發(fā)成功后返回的消息ID
    
      public string massDate { get; set; }//群發(fā)日期時(shí)間
    
     }

    以上是“asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


    文章標(biāo)題:asp.net微信開發(fā)之如何實(shí)現(xiàn)群發(fā)圖文
    網(wǎng)站地址:http://weahome.cn/article/jpscpo.html

    其他資訊

    在線咨詢

    微信咨詢

    電話咨詢

    028-86922220(工作日)

    18980820575(7×24)

    提交需求

    返回頂部