婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > asp.net微信開(kāi)發(fā)(高級(jí)群發(fā)圖文)

asp.net微信開(kāi)發(fā)(高級(jí)群發(fā)圖文)

熱門標(biāo)簽:西寧電銷外呼系統(tǒng)公司 辦公用地圖標(biāo)注網(wǎng)點(diǎn)怎么操作 聊城智能電銷機(jī)器人電話 云南外呼系統(tǒng)代理 南昌自動(dòng)外呼系統(tǒng)線路 安陸市地圖標(biāo)注app 上海市三維地圖標(biāo)注 海東防封電銷卡 寧德防封版電銷卡

上一篇介紹了如何群發(fā)文本消息,本篇將介紹如何群發(fā)圖文信息,上傳圖文信息所需的素材,界面如下:

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

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

前臺(tái)代碼如下:

 !--彈出選擇素材窗口-->
  div id="shownewgroup">
  div class="closeLogin" style="height:40px; background-color:#ddd9ff; line-height:40px;">span style="float:left; color:#000; font-size:14px; text-indent:5px;">選擇素材/span>
  span style="float:left;margin-left:20px;">a href="WxNewTuWen.aspx" style="color:red;" onclick="hrefurl();" class="hrefurl">新建圖文素材/a>/span>
  a class="closeloginpage">img src="images/close1.png" alt="" />/a>nbsp;nbsp;/div>
  
  div style="height:455px; width:100%;">
  asp:UpdatePanel ID="UpdatePanel2" runat="server">
   ContentTemplate>
    div style="width:100%; height:35px; margin:10px;">asp:LinkButton ID="LinkBtnSelect" runat="server" OnClick="LinkBtnSelect_Click" >div style="background-image:url('images/buttonbg.png'); width:111px; height:35px; float:left; line-height:35px; font-weight:bold; text-align:center;color:#fff;">確認(rèn)選擇/div>/asp:LinkButton>
    span style="float:left;margin-left:20px;">asp:LinkButton ID="LinkbtnRefresh" CssClass="LinkbtnRefresh" runat="server" OnClick="LinkbtnRefresh_Click">div style="background-image:url('images/buttonbg.png'); width:111px; height:35px; line-height:35px; font-weight:bold; text-align:center;color:#fff;">刷新/div>/asp:LinkButton>/span>
    span style="float:left;margin-left:20px;">asp:LinkButton ID="LinkBtnDelete" CssClass="LinkbtnRefresh" runat="server" OnClick="LinkBtnDelete_Click">div style="background-image:url('images/buttonbg.png'); width:111px; height:35px; line-height:35px; font-weight:bold; text-align:center;color:#fff;">刪除素材/div>/asp:LinkButton>/span>
    /div>
  div style="word-wrap:break-word;" id="lbnewssucai" runat="server">
   asp:Repeater ID="Repeatersucailist" runat="server" OnItemDataBound="Repeatersucailist_ItemDataBound">
   ItemTemplate>
    table style="width:100%; border-top:1px solid #edc9df; border-collapse:collapse; font-size:12px;" >
    tr>
     td style="width:100px;">asp:Image ID="ImageUrl" CssClass="fenmianstyle2" runat="server" />/td>
     td style="text-align:left; width:470px; ">
     asp:Repeater ID="Repeatersucailist2" runat="server">
      ItemTemplate>
      ul style="margin:0px;padding:0px;">
       li>%# Eval("title") %>/li>
      /ul>
      /ItemTemplate>
     /asp:Repeater>
     /td>
     td style="width:130px;">
     asp:Label ID="lbUpate_time" runat="server" Text="Label">/asp:Label>
     /td>
     td style="width:50px; text-align:center;">
     asp:CheckBox ID="CheckIn" runat="server" />
     asp:Label ID="lbmedia_id" runat="server" Visible="false" Text="">/asp:Label>
     /td>
    /tr>
    /table>
   /ItemTemplate> 
   /asp:Repeater>
   div style="font-size:14px; height:30px; line-height:30px; text-indent:10px; border-top:1px solid #ced9df;">
   span style="float:left;">本類型素材總數(shù)量為:/span>span style="float:left; color:red;">asp:Label ID="lbtotal_count" runat="server" Text="0">/asp:Label>/span>nbsp;nbsp;
   span style="float:left; margin-left:20px;">本次獲取的素材數(shù)量為:/span>span style="float:left; color:red;">asp:Label ID="lbitem_count" runat="server" Text="0">/asp:Label>/span>
   /div>
  /div>
   /ContentTemplate>
  /asp:UpdatePanel>
  /div>
 /div>
 div id="shownewgroupzhezhaoceng">/div>

后臺(tái)代碼如下:

 /// summary>
 /// 綁定圖文素材列表
 /// /summary>
 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秒后過(guò)期
  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();

  ListWxNewsSucaiIteminfo> newssucaiitemlist = new ListWxNewsSucaiIteminfo>();
  ListWxNewsSuCaiItemlistinfo> WxNewsSuCaiItemlist = new ListWxNewsSuCaiItemlistinfo>();
  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();
 }

再來(lái)看看,新建單圖文信息界面:

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

 /// summary>
 /// 
 /// /summary>上傳圖片文件
 /// param name="sender">/param>
 /// param name="e">/param>
 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ù)器會(huì)自動(dòng)刪除

   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秒后過(guò)期
    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("script>alert('上傳圖片成功!')/script>");
   }
   else
   {
   Response.Write("script>alert('上傳文件不能大于2M!')/script>");
   }
   
  }
  else
  {
   Response.Write("script>alert('只支持BMP,GIF,PNG,JPG格式的圖片!')/script>");
  }
  }
  else
  {
  Response.Write("script>alert('請(qǐng)選擇圖片!')/script>");
  }
 }
 /// summary> 
 /// Http上傳文件 
 /// /summary> 
 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);

  //請(qǐng)求頭部信息 
  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ā)送請(qǐng)求并獲取相應(yīng)回應(yīng)數(shù)據(jù) 
  HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  //直到request.GetResponse()程序才開(kāi)始向目標(biāo)網(wǎng)頁(yè)發(fā)送Post請(qǐng)求 
  Stream instream = response.GetResponseStream();
  StreamReader sr = new StreamReader(instream, Encoding.UTF8);
  //返回結(jié)果網(wǎng)頁(yè)(html)代碼 
  string content = sr.ReadToEnd();
  return content;
 } 
 /// summary>
 /// 刪除圖片
 /// /summary>
 /// param name="sender">/param>
 /// param name="e">/param>
 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ù)覽代碼如下:

 /// summary>
 /// 預(yù)覽圖文消息
 /// /summary>
 /// param name="sender">/param>
 /// param name="e">/param>
 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('請(qǐng)輸入圖文標(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('請(qǐng)輸入正文內(nèi)容!');", true);
  this.tbContent.Focus();
  return;
  }

  //對(duì)各項(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秒后過(guò)期
  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("請(qǐng)輸入用戶微信號(hào)"))
  {
   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('請(qǐng)輸入接收消息的用戶微信號(hào)!');", true);
   return;
  }



  string posturls = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=" + Access_tokento;

  //預(yù)覽圖文消息的json數(shù)據(jù){
  // "touser":"OPENID", 可改為對(duì)微信號(hào)預(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, @"script[^>]*?>.*?/script>", "", RegexOptions.IgnoreCase);

  //替換標(biāo)簽
  Htmlstring = Htmlstring.Replace("\r\n", " ");
  Htmlstring = Htmlstring.Replace("\"", "'");
  Htmlstring = Htmlstring.Replace("nbsp;", " ");
  return Htmlstring;

 }

單擊確定按鈕代碼如下:

 /// summary>
 /// 確認(rèn)選擇
 /// /summary>
 /// param name="sender">/param>
 /// param name="e">/param>
 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('請(qǐng)輸入圖文標(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('請(qǐng)輸入正文內(nèi)容!');", true);
  return;
  }

  //對(duì)各項(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秒后過(guò)期
  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());
  }
 }
 /// summary> 
 /// 請(qǐng)求Url,發(fā)送數(shù)據(jù) 
 /// /summary> 
 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ā)送請(qǐng)求并獲取相應(yīng)回應(yīng)數(shù)據(jù) 
  HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  //直到request.GetResponse()程序才開(kāi)始向目標(biāo)網(wǎng)頁(yè)發(fā)送Post請(qǐng)求 
  Stream instream = response.GetResponseStream();
  StreamReader sr = new StreamReader(instream, Encoding.UTF8);
  //返回結(jié)果網(wǎng)頁(yè)(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;
  }
  }
 }

最終界面如下:

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

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

 /// summary>
  /// 群發(fā)
  /// /summary>
  /// param name="sender">/param>
  /// param name="e">/param>
  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('請(qǐng)選擇或新建圖文素材再進(jìn)行群發(fā)!');", true);
     return;
    }

    WxMassService wms = new WxMassService();

    ListWxMassInfo> wxmaslist = wms.GetMonthMassCount();

    if (wxmaslist.Count >= 4)
    {
     ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert('本月可群發(fā)消息數(shù)量已達(dá)上限!');", true);
     return;
    }
    else
    {
     
     //如何群發(fā)類型為全部用戶,根據(jù)openID列表群發(fā)給全部用戶,訂閱號(hào)不可用,服務(wù)號(hào)認(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秒后過(guò)期
       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ù)保存失敗!');", 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;
      }


     }
     else
     {
      //根據(jù)分組進(jìn)行群發(fā),訂閱號(hào)和服務(wù)號(hào)認(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秒后過(guò)期
       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ù)器還需審核,審核過(guò)程中也有可能審核不通過(guò),不給于群發(fā),所以我起名叫這個(gè),嘿嘿,隨便你們?cè)趺雌稹!!!!?/p>

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

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

 /// summary>
 /// 微信已群發(fā)消息實(shí)體類,用于記錄已群發(fā)消息的條數(shù),信息實(shí)體
 /// /summary>
 public class WxMassInfo
 {
  public int WxMassNo { get; set; }//群發(fā)消息編號(hào),數(shù)據(jù)庫(kù)自增列

  public string title { get; set; }//圖文消息的標(biāo)題,若消息是文本類型,此項(xiàng)不顯示

  public string ImageUrl { get; set; }//圖片地址,若消息是文本類型,此項(xiàng)不顯示

  public string type { get; set; }//消息的類型,文本,圖文,圖片,語(yǔ)音,視頻

  public string contents { get; set; }//文本消息的內(nèi)容,圖文消息的正文

  public string massObject { get; set; }//群發(fā)對(duì)象

  public string massStatus { get; set; }//群發(fā)狀態(tài)

  public string massMessageID{ get; set; }//群發(fā)成功后返回的消息ID

  public string massDate { get; set; }//群發(fā)日期時(shí)間

 }

本文已被整理到了《ASP.NET微信開(kāi)發(fā)教程匯總》,歡迎大家學(xué)習(xí)閱讀。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

您可能感興趣的文章:
  • 微信公眾平臺(tái)開(kāi)發(fā)——群發(fā)信息
  • php微信公眾平臺(tái)開(kāi)發(fā)之微信群發(fā)信息
  • php微信高級(jí)接口群發(fā) 多客服
  • C#微信公眾平臺(tái)開(kāi)發(fā)之高級(jí)群發(fā)接口
  • asp.net微信開(kāi)發(fā)(高級(jí)群發(fā)文本)
  • php實(shí)現(xiàn)微信公眾號(hào)無(wú)限群發(fā)
  • C#實(shí)現(xiàn)微信公眾號(hào)群發(fā)消息(解決一天只能發(fā)一次的限制)實(shí)例分享
  • php微信公眾號(hào)開(kāi)發(fā)(4)php實(shí)現(xiàn)自定義關(guān)鍵字回復(fù)
  • php微信公眾號(hào)開(kāi)發(fā)(3)php實(shí)現(xiàn)簡(jiǎn)單微信文本通訊
  • 微信公眾號(hào)模板消息群發(fā)php代碼示例

標(biāo)簽:洛陽(yáng) 衢州 崇左 贛州 南寧 汕尾 青海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net微信開(kāi)發(fā)(高級(jí)群發(fā)圖文)》,本文關(guān)鍵詞  asp.net,微信,開(kāi)發(fā),高級(jí),群發(fā),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《asp.net微信開(kāi)發(fā)(高級(jí)群發(fā)圖文)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于asp.net微信開(kāi)發(fā)(高級(jí)群發(fā)圖文)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    av亚洲精华国产精华| 成人激情免费网站| 久久久久久久久久久久久夜| 99视频一区二区| 欧美丝袜自拍制服另类| 国产成人在线免费观看| 亚洲天天做日日做天天谢日日欢| 欧美欧美欧美欧美| 99精品国产99久久久久久白柏| 日韩电影免费在线看| 亚洲三级免费观看| 日本一区二区视频在线观看| 欧美成人精品1314www| 欧美综合亚洲图片综合区| 国产高清亚洲一区| 久久99热这里只有精品| 婷婷久久综合九色国产成人| 亚洲乱码中文字幕| 国产精品免费久久| 国产日产精品一区| 精品国偷自产国产一区| 555www色欧美视频| 欧美人牲a欧美精品| 色哟哟精品一区| 成人av在线播放网址| 国产精品亚洲一区二区三区妖精| 麻豆一区二区99久久久久| 亚洲一区二区视频| 亚洲一区二区三区四区五区黄 | 在线精品视频一区二区| av电影在线观看完整版一区二区| 国产九九视频一区二区三区| 久久精品国产77777蜜臀| 日韩av电影天堂| 日韩精品成人一区二区三区| 亚洲成人久久影院| 日韩av电影免费观看高清完整版 | 夜色激情一区二区| 亚洲欧洲综合另类| 亚洲综合丁香婷婷六月香| 一区二区三区 在线观看视频| 一区二区三区在线免费播放| 亚洲国产人成综合网站| 视频一区欧美精品| 男人的天堂久久精品| 美女一区二区三区| 国产制服丝袜一区| 国产成人精品一区二区三区四区| 成人手机在线视频| 色94色欧美sute亚洲13| 欧美视频自拍偷拍| 欧美成人三级电影在线| 久久蜜桃一区二区| 亚洲视频 欧洲视频| 亚洲视频中文字幕| 五月天激情综合网| 国产在线视频一区二区三区| 成人在线视频一区| 欧美亚洲尤物久久| 精品国产91亚洲一区二区三区婷婷| 精品国产乱码久久| 综合电影一区二区三区| 亚洲国产精品久久人人爱 | 日韩av午夜在线观看| 久久成人羞羞网站| 波多野结衣亚洲一区| 91精品福利视频| 欧美一级黄色大片| 中文字幕av资源一区| 亚洲综合在线观看视频| 喷水一区二区三区| 99热这里都是精品| 欧美一区二区三区免费在线看| 国产日韩欧美在线一区| 午夜在线成人av| 国产一区二区不卡在线| 色av综合在线| 久久综合九色综合欧美98| 亚洲欧美日韩国产手机在线| 日本不卡123| zzijzzij亚洲日本少妇熟睡| 日韩一二三区视频| 亚洲三级小视频| 韩国精品久久久| 欧美吻胸吃奶大尺度电影 | 日韩不卡一二三区| 成人动漫中文字幕| 日韩小视频在线观看专区| 亚洲欧美一区二区三区极速播放 | 成人av电影观看| 91精品国产综合久久久蜜臀粉嫩 | 国产日韩视频一区二区三区| 亚洲国产综合色| 国产成人精品亚洲午夜麻豆| 在线综合亚洲欧美在线视频| 亚洲色欲色欲www| 国产成人在线电影| 日韩三级视频在线观看| 亚洲综合久久av| 不卡的av电影| 亚洲精品一区二区三区在线观看| 亚洲午夜av在线| 成人精品视频一区| 久久无码av三级| 奇米影视在线99精品| 欧洲国产伦久久久久久久| 中文在线一区二区 | a级精品国产片在线观看| 精品欧美久久久| 日本不卡一区二区| 精品视频在线免费观看| 一区二区三区四区中文字幕| av亚洲精华国产精华| 久久久99免费| 久久66热re国产| 日韩一区二区三免费高清| 亚洲一区成人在线| 91视频免费播放| 中文字幕一区二区在线观看| 国产成人久久精品77777最新版本| 日韩免费观看高清完整版在线观看 | 精品少妇一区二区| 裸体一区二区三区| 欧美一区二区福利视频| 日韩和欧美一区二区三区| 欧美性猛片xxxx免费看久爱| 亚洲美女一区二区三区| 在线中文字幕一区二区| 亚洲男帅同性gay1069| 97久久人人超碰| 亚洲欧洲日产国码二区| av在线不卡网| 亚洲裸体在线观看| 色婷婷av一区二区三区gif| 亚洲日本va在线观看| 色婷婷一区二区三区四区| 一区二区三区日韩在线观看| 欧美丝袜丝交足nylons图片| 天天射综合影视| 欧美一区二区日韩| 久久精品99国产精品| 久久久久久久一区| 成人av动漫在线| 一级日本不卡的影视| 欧美日韩国产片| 久久99精品国产.久久久久久| 久久精品视频一区二区| 成人av电影在线播放| 亚洲综合精品久久| 日韩三级视频在线看| 国产精品资源网站| 国产精品久久久久久一区二区三区| gogogo免费视频观看亚洲一| 亚洲五月六月丁香激情| 日韩午夜中文字幕| 国产成人av电影| 亚洲激情av在线| 欧美一级日韩免费不卡| 国产精品一区二区你懂的| **欧美大码日韩| 欧美日韩视频在线第一区 | 欧美日韩成人在线| 麻豆精品一区二区三区| 中文字幕高清一区| 欧美日韩精品欧美日韩精品| 狠狠色丁香久久婷婷综合_中| 国产精品国产馆在线真实露脸| 欧美日韩精品系列| 国产传媒欧美日韩成人| 亚洲国产美女搞黄色| 久久青草欧美一区二区三区| 99riav一区二区三区| 人人超碰91尤物精品国产| 欧美国产激情二区三区| 欧美日韩极品在线观看一区| 国产精品一区二区三区99| 亚洲成a人v欧美综合天堂| 国产女主播视频一区二区| 欧美日韩激情一区二区三区| 国产成人在线色| 日日夜夜精品视频免费| 国产精品国产三级国产普通话三级| 欧美一区永久视频免费观看| 成人午夜短视频| 美女脱光内衣内裤视频久久网站 | 91在线视频官网| 日本不卡一区二区三区高清视频| 亚洲欧洲av色图| 精品福利一区二区三区免费视频| 91麻豆.com| 国产成人精品亚洲午夜麻豆| 首页国产欧美久久| 亚洲欧美激情小说另类| 久久精品一区八戒影视| 欧美日韩成人在线一区| 91麻豆精品视频| 国产suv一区二区三区88区| 麻豆成人久久精品二区三区红| 夜夜爽夜夜爽精品视频| 国产精品美女久久久久高潮|