<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      微信公眾號開發(fā)C#系列-6、消息管理-普通消息接受處理

      1、概述

      通過前面章節(jié)的學(xué)習(xí),我們已經(jīng)對微信的開發(fā)有了基本的掌握與熟悉,基本可以上手做復(fù)雜的應(yīng)用了。本篇我們將詳細講解微信消息管理中普通消息的接收與處理。當(dāng)普通微信用戶向公眾賬號發(fā)消息時,微信服務(wù)器將POST消息的XML數(shù)據(jù)包到開發(fā)者填寫的URL上。接收普通消息微信官方文檔參考:接收普通消息文檔API
      消息接收后,就有一個處理或回復(fù)的過程,單單發(fā)送消息了沒有響應(yīng)也是不人性化的,下面我們就對接收到微信各類型消息分別講解處理的方法。

      2、消息接收

      接收普通消息類型

      當(dāng)普通微信用戶向公眾賬號發(fā)消息時,微信服務(wù)器會先接收到用戶發(fā)送的消息,然后將用戶消息按照指定的XML格式組裝好數(shù)據(jù),最后POST消息的XML數(shù)據(jù)包到開發(fā)者填寫的URL上。

      接收到的普通消息的消息類型目前有以下幾種:

      1. 文本消息
      2. 圖片消息
      3. 語音消息
      4. 視頻消息
      5. 小視頻消息
      6. 地理位置消息
      7. 鏈接消息

      每一種消息類型都有其指定的XML數(shù)據(jù)格式,這7種消息的xml格式請到官方文檔查看,有具體的格式定義和屬性說明。格式很簡單,基本共有屬性包括ToUserName、FromUserName、CreateTime、MsgType、MsgId,并且每種類型有自己特殊的屬性。

      接收消息的過程其實就是獲取post請求的這個xml,然后對這個xml進行分析的過程。post請求的入口還是之前提到的微信公眾號接入的那個地址,整個公眾號的所有請求都會走這個入口,只是接入時是get請求,其它情況下是post請求。

      3、消息回復(fù)

      微信服務(wù)器在將用戶的消息發(fā)給公眾號的開發(fā)者服務(wù)器地址后,會等待開發(fā)者服務(wù)器回復(fù)響應(yīng)消息。微信服務(wù)器在五秒內(nèi)收不到響應(yīng)會斷掉連接,并且重新發(fā)起請求,總共重試三次。

      假如服務(wù)器無法保證在五秒內(nèi)處理并回復(fù),必須做出下述回復(fù),這樣微信服務(wù)器才不會對此作任何處理,并且不會發(fā)起重試(這種情況下,可以使用客服消息接口進行異步回復(fù)),否則,將出現(xiàn)嚴(yán)重的錯誤提示。詳見下面說明:

      1、(推薦方式)直接回復(fù)success

      2、直接回復(fù)空串(指字節(jié)長度為0的空字符串,而不是XML結(jié)構(gòu)體中content字段的內(nèi)容為空)

      一旦遇到以下情況,微信都會在公眾號會話中,向用戶下發(fā)系統(tǒng)提示“該公眾號暫時無法提供服務(wù),請稍后再試”

      1、開發(fā)者在5秒內(nèi)未回復(fù)任何內(nèi)容

      2、開發(fā)者回復(fù)了異常數(shù)據(jù),比如JSON數(shù)據(jù)等

      另外,請注意,回復(fù)圖片等多媒體消息時需要預(yù)先通過素材管理接口上傳臨時素材到微信服務(wù)器,可以使用素材管理中的臨時素材,也可以使用永久素材。

      消息回復(fù)目前支持回復(fù)文本、圖片、圖文、語音、視頻、音樂,每一種類型的消息都有特定的XML數(shù)據(jù)格式。這幾種回復(fù)消息的xml數(shù)據(jù)格式請參考官方文檔,有具體的格式定義和屬性說明。格式很簡單,基本共有屬性包括ToUserName、FromUserName、CreateTime、MsgType,并且每種類型有自己特殊的屬性。

      4、各類型消息的接收與回復(fù)

      使用Senparc.Weixin框架來快速處理各種接收的普通消息,實現(xiàn)非常簡單,自定義一個繼承MessageHandler的類,重寫這7種類型的方法即可。注意:DefaultResponseMessage必須重寫,用于返回沒有處理過的消息類型(也可以用于默認消息,如幫助信息等);其中所有原OnXX的抽象方法已經(jīng)都改為虛方法,可以不必每個都重寫。若不重寫,默認返回DefaultResponseMessage方法中的結(jié)果。
      CustomMessageHandle.cs需要繼承Senparc.Weixin.MP.MessageHandlers這個抽象類,并實現(xiàn)部分方法。最初步的CustomMessageHandle.cs代碼
      可能如下:

      public class CustomMessageHandler : MessageHandler<CustomMessageContext>
      {
          public CustomMessageHandler(Stream inputStream, PostModel postModel)
              : base(inputStream, postModel)
          {
      
          }
      
          public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage)
          {
              var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); //ResponseMessageText也可以是News等其他類型
              responseMessage.Content = "這條消息來自DefaultResponseMessage。";
              return responseMessage;
          }
      }
      

      我們可以看到必須要重寫實現(xiàn)的抽象方法名為DefaultResponseMessage(),這一條信息用于返回一條的消息,假如對應(yīng)類型(如語音)的微信消息沒有被代碼處理,那么默認會返回這里的結(jié)果。在DefaultResponseMessage()方法中,我們看到這樣一句:

      var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); //ResponseMessageText也可以是News等其他類型
      

      這里的CreateResponseMessage方法即創(chuàng)建一個返回對象,T可以為以下類型的任意一個,分別對應(yīng)了不同的返回類型:

      • ResponseMessageText - 對應(yīng)文本消息
      • ResponseMessageNews - 對應(yīng)圖文消息
      • ResponseMessageMusic - 對應(yīng)音樂消息
      • ResponseMessageXXX - 其他類型以此類推

      各種類型的消息我們可以根據(jù)我們自己的業(yè)務(wù)要求進行重寫回復(fù),如果沒重寫就會返回默認的消息(重寫默認響應(yīng)的基礎(chǔ)上)。

      4.1、文本消息的接收與回復(fù)

      文本消息對應(yīng)的數(shù)據(jù)包XML格式如下:

      <xml>
        <ToUserName><![CDATA[toUser]]></ToUserName>
        <FromUserName><![CDATA[fromUser]]></FromUserName>
        <CreateTime>1348831860</CreateTime>
        <MsgType><![CDATA[text]]></MsgType>
        <Content><![CDATA[this is a test]]></Content>
        <MsgId>1234567890123456</MsgId>
      </xml>
      

      參數(shù)說明:

      參數(shù)				描述
      ToUserName		開發(fā)者微信號(直接把它當(dāng)做你的公眾號的微信號即可)
      FromUserName	發(fā)送方帳號(一個OpenID)
      CreateTime		消息創(chuàng)建時間 (整型)
      MsgType			消息類型,文本為text
      Content			文本消息內(nèi)容
      MsgId			消息id,64位整型
      

      處理文本消息參考代碼:

      /// <summary>
      /// 處理文字請求
      /// </summary>
      /// <returns></returns>
      public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage)
      {
          //注意:下面泛型ResponseMessageText即返回給客戶端的類型,可以根據(jù)自己的需要填寫ResponseMessageNews等不同類型。
          var responseMessage = CreateResponseMessage<ResponseMessageText>();
       
          var result = new StringBuilder();
          result.AppendFormat("您剛發(fā)送了文本信息:{0}\r\n\r\n", requestMessage.Content);
       
          if (CurrentMessageContext.RequestMessages.Count > 1)
          {
              result.AppendFormat("您剛還發(fā)送了如下消息({0}/{1}):\r\n", CurrentMessageContext.RequestMessages.Count, CurrentMessageContext.StorageData);
              for (int i = CurrentMessageContext.RequestMessages.Count - 2; i >= 0; i--)
              {
                  var historyMessage = CurrentMessageContext.RequestMessages[i];
                  result.AppendFormat("{0} 【{1}】{2}\r\n",
                                      historyMessage.CreateTime.ToShortTimeString(),
                                      historyMessage.MsgType.ToString(),
                                      (historyMessage is RequestMessageText)
                                          ? (historyMessage as RequestMessageText).Content
                                          : "[非文字類型]"
                      );
              }
              result.AppendLine("\r\n");
          }
          result.AppendFormat("如果您在{0}分鐘內(nèi)連續(xù)發(fā)送消息,記錄將被自動保留(當(dāng)前設(shè)置:最多記錄{1}條)。過期后記錄將會自動清除。\r\n", WeixinContext.ExpireMinutes, WeixinContext.MaxRecordCount);
          result.AppendLine("\r\n");
          result.AppendLine("您還可以發(fā)送【位置】【圖片】【語音】【視頻】等類型的信息(注意是這幾種類型,不是這幾個文字),查看不同格式的回復(fù)。");
          responseMessage.Content = result.ToString();
          return responseMessage;
      }
      

      文本消息調(diào)試狀態(tài)展示

      文本消息回復(fù)結(jié)果展示

      4.2、圖片消息的接收與回復(fù)

      圖片消息對應(yīng)的數(shù)據(jù)包XML格式如下:

      <xml>
        <ToUserName><![CDATA[toUser]]></ToUserName>
        <FromUserName><![CDATA[fromUser]]></FromUserName>
        <CreateTime>1348831860</CreateTime>
        <MsgType><![CDATA[image]]></MsgType>
        <PicUrl><![CDATA[this is a url]]></PicUrl>
        <MediaId><![CDATA[media_id]]></MediaId>
        <MsgId>1234567890123456</MsgId>
      </xml>
      

      參數(shù)說明:

      參數(shù)				描述
      
      ToUserName		開發(fā)者微信號
      FromUserName	發(fā)送方帳號(一個OpenID)
      CreateTime		消息創(chuàng)建時間 (整型)
      MsgType			消息類型,圖片為image
      PicUrl			圖片鏈接(由系統(tǒng)生成)
      MediaId			圖片消息媒體id,可以調(diào)用獲取臨時素材接口拉取數(shù)據(jù)。
      MsgId			消息id,64位整型
      

      處理圖片消息參考代碼:

      /// <summary>
      /// 處理圖片請求
      /// </summary>
      /// <param name="requestMessage"></param>
      /// <returns></returns>
      public override IResponseMessageBase OnImageRequest(RequestMessageImage requestMessage)
      {
          var responseMessage = CreateResponseMessage<ResponseMessageNews>();
          responseMessage.Articles.Add(new Article()
          {
              Title = "您剛才發(fā)送了圖片信息",
              Description = "您發(fā)送的圖片將會顯示在邊上",
              PicUrl = requestMessage.PicUrl,
              Url = "http://blog.rdiframework.net/"
          });
          responseMessage.Articles.Add(new Article()
          {
              Title = "第二條",
              Description = "第二條帶連接的內(nèi)容",
              PicUrl = requestMessage.PicUrl,
              Url = "http://blog.rdiframework.net/"
          });
      
          return responseMessage;
      }
      

      在上面代碼中我們返回了用戶發(fā)送的圖片消息,同時加上了鏈接地址,用戶單擊消息會自動跳轉(zhuǎn)到指定的URL地址。

      圖片消息調(diào)試狀態(tài)展示

      圖片消息回復(fù)結(jié)果展示

      4.3、語音消息的接收與回復(fù)

      語音消息對應(yīng)的數(shù)據(jù)包XML格式如下:

      <xml>
        <ToUserName><![CDATA[toUser]]></ToUserName>
        <FromUserName><![CDATA[fromUser]]></FromUserName>
        <CreateTime>1357290913</CreateTime>
        <MsgType><![CDATA[voice]]></MsgType>
        <MediaId><![CDATA[media_id]]></MediaId>
        <Format><![CDATA[Format]]></Format>
        <MsgId>1234567890123456</MsgId>
      </xml>
      

      參數(shù)				描述
      ToUserName		開發(fā)者微信號
      FromUserName	發(fā)送方帳號(一個OpenID)
      CreateTime		消息創(chuàng)建時間 (整型)
      MsgType			語音為voice
      MediaId			語音消息媒體id,可以調(diào)用獲取臨時素材接口拉取數(shù)據(jù)。
      Format			語音格式,如amr,speex等
      MsgID			消息id,64位整型
      

      參數(shù)說明:

      處理語音消息參考代碼:

      /// <summary>
      /// 處理語音請求
      /// </summary>
      /// <param name="requestMessage"></param>
      /// <returns></returns>
      public override IResponseMessageBase OnVoiceRequest(RequestMessageVoice requestMessage)
      {
          //獲得當(dāng)前公眾號
          WeixinOfficialAccountEntity account = RDIFrameworkService.Instance.WeixinBasicService.GetOfficialAccountEntity(Id);
          
          var responseMessage = CreateResponseMessage<ResponseMessageMusic>();
          //上傳縮略圖
          var uploadResult = Senparc.Weixin.MP.AdvancedAPIs.MediaApi.UploadTemporaryMedia(account.AccessToken, UploadMediaFileType.image,Server.GetMapPath("~/Content/Images/weixing-ma.png"));
      
          //設(shè)置音樂信息
          responseMessage.Music.Title = "天籟之音";
          responseMessage.Music.Description = "播放您上傳的語音";
          responseMessage.Music.MusicUrl = "http://www.rdiframework.net/resource/25375532.mp3";
          responseMessage.Music.HQMusicUrl = "http://www.rdiframework.net/Media/GetVoice?mediaId=" + requestMessage.MediaId;
          responseMessage.Music.ThumbMediaId = uploadResult.media_id;
          return responseMessage;
      }
      

      語音消息調(diào)試狀態(tài)展示

      語音消息回復(fù)結(jié)果展示

      4.4、視頻消息的接收與回復(fù)

      視頻消息對應(yīng)的數(shù)據(jù)包XML格式如下:

      <xml>
        <ToUserName><![CDATA[toUser]]></ToUserName>
        <FromUserName><![CDATA[fromUser]]></FromUserName>
        <CreateTime>1357290913</CreateTime>
        <MsgType><![CDATA[video]]></MsgType>
        <MediaId><![CDATA[media_id]]></MediaId>
        <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
        <MsgId>1234567890123456</MsgId>
      </xml>
      

      參數(shù)說明:

      參數(shù)				描述
      ToUserName		開發(fā)者微信號
      FromUserName	發(fā)送方帳號(一個OpenID)
      CreateTime		消息創(chuàng)建時間 (整型)
      MsgType			視頻為video
      MediaId			視頻消息媒體id,可以調(diào)用獲取臨時素材接口拉取數(shù)據(jù)。
      ThumbMediaId	視頻消息縮略圖的媒體id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
      MsgId			消息id,64位整型
      

      處理視頻消息參考代碼:

      /// <summary>
      /// 處理視頻請求
      /// </summary>
      /// <param name="requestMessage"></param>
      /// <returns></returns>
      public override IResponseMessageBase OnVideoRequest(RequestMessageVideo requestMessage)
      {
          var responseMessage = CreateResponseMessage<ResponseMessageText>();
          responseMessage.Content = "您發(fā)送了一條視頻信息,ID:" + requestMessage.MediaId;
          return responseMessage;
      }
      

      視頻消息調(diào)試狀態(tài)展示

      視頻消息回復(fù)結(jié)果展示

      4.5、小視頻消息的接收與回復(fù)

      視頻與小視頻主要區(qū)別是在MsgType上,其他的都一樣。

      小視頻消息對應(yīng)的數(shù)據(jù)包XML格式如下:

      <xml>
        <ToUserName><![CDATA[toUser]]></ToUserName>
        <FromUserName><![CDATA[fromUser]]></FromUserName>
        <CreateTime>1357290913</CreateTime>
        <MsgType><![CDATA[shortvideo]]></MsgType>
        <MediaId><![CDATA[media_id]]></MediaId>
        <ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
        <MsgId>1234567890123456</MsgId>
      </xml>
      

      參數(shù)說明:

      參數(shù)				描述
      ToUserName		開發(fā)者微信號
      FromUserName	發(fā)送方帳號(一個OpenID)
      CreateTime		消息創(chuàng)建時間 (整型)
      MsgType			小視頻為shortvideo
      MediaId			視頻消息媒體id,可以調(diào)用獲取臨時素材接口拉取數(shù)據(jù)。
      ThumbMediaId	視頻消息縮略圖的媒體id,可以調(diào)用獲取臨時素材接口拉取數(shù)據(jù)。
      MsgId			消息id,64位整型
      

      處理小視頻消息參考代碼:

      public override IResponseMessageBase OnShortVideoRequest(RequestMessageShortVideo requestMessage)
      {
          var responseMessage = this.CreateResponseMessage<ResponseMessageText>();
          responseMessage.Content = "您剛才發(fā)送的是小視頻";
          return responseMessage;
      }
      

      4.6、地理位置消息的接收與回復(fù)

      地理位置消息對應(yīng)的數(shù)據(jù)包XML格式如下:

      <xml>
        <ToUserName><![CDATA[toUser]]></ToUserName>
        <FromUserName><![CDATA[fromUser]]></FromUserName>
        <CreateTime>1351776360</CreateTime>
        <MsgType><![CDATA[location]]></MsgType>
        <Location_X>23.134521</Location_X>
        <Location_Y>113.358803</Location_Y>
        <Scale>20</Scale>
        <Label><![CDATA[位置信息]]></Label>
        <MsgId>1234567890123456</MsgId>
      </xml>
      

      參數(shù)說明:

      參數(shù)				描述
      ToUserName		開發(fā)者微信號
      FromUserName	發(fā)送方帳號(一個OpenID)
      CreateTime		消息創(chuàng)建時間 (整型)
      MsgType			消息類型,地理位置為location
      Location_X		地理位置維度
      Location_Y		地理位置經(jīng)度
      Scale			地圖縮放大小
      Label			地理位置信息
      MsgId			消息id,64位整型
      

      處理地理位置消息參考代碼:

      /// <summary>
      /// 處理位置請求
      /// </summary>
      /// <param name="requestMessage"></param>
      /// <returns></returns>
      public override IResponseMessageBase OnLocationRequest(RequestMessageLocation requestMessage)
      {
          //返回的是圖文消息,是關(guān)于地址的圖文消息。
          var responseLocation = base.CreateResponseMessage<ResponseMessageNews>();
      
          var markersList = new List<BaiduMarkers>();
          markersList.Add(new BaiduMarkers()
          {
              Size = BaiduMarkerSize.m,
              Color = "red",
              Label = "A",
              Latitude = requestMessage.Location_X,
              Longitude = requestMessage.Location_Y,
          });
          var mapUrl = BaiduMapHelper.GetBaiduStaticMap(requestMessage.Location_Y, requestMessage.Location_X, 1, 13, markersList);
          responseLocation.Articles.Add(new Article()
          {
              Description = string.Format("您剛才發(fā)送了地理位置信息。Location_X:{0},Location_Y:{1},Scale:{2},標(biāo)簽:{3}", requestMessage.Location_X, requestMessage.Location_Y, requestMessage.Scale, requestMessage.Label),
              PicUrl = SystemInfo.WeChatSiteUrl +"/Content/Images/toplogo.png",
              Title = "國思軟件快速開發(fā)框架-地圖返回",
              Url = mapUrl
          });
          return responseLocation;
      }
      

      地理位置消息調(diào)試狀態(tài)展示

      地理位置消息回復(fù)結(jié)果展示

      對于回復(fù)的消息,我們還可以單擊彈出百度地圖返回的位置詳情,具體應(yīng)用可據(jù)此擴展。
      地理位置消息返回消息彈出位置圖片

      4.7、鏈接消息的接收與回復(fù)

      鏈接消息對應(yīng)的數(shù)據(jù)包XML格式如下:

      <xml>
        <ToUserName><![CDATA[toUser]]></ToUserName>
        <FromUserName><![CDATA[fromUser]]></FromUserName>
        <CreateTime>1351776360</CreateTime>
        <MsgType><![CDATA[link]]></MsgType>
        <Title><![CDATA[公眾平臺官網(wǎng)鏈接]]></Title>
        <Description><![CDATA[公眾平臺官網(wǎng)鏈接]]></Description>
        <Url><![CDATA[url]]></Url>
        <MsgId>1234567890123456</MsgId>
      </xml>
      

      參數(shù)說明:

      參數(shù)	描述
      ToUserName		接收方微信號
      FromUserName	發(fā)送方微信號,若為普通用戶,則是一個OpenID
      CreateTime		消息創(chuàng)建時間
      MsgType			消息類型,鏈接為link
      Title			消息標(biāo)題
      Description		消息描述
      Url				消息鏈接
      MsgId			消息id,64位整型
      

      鏈接位置消息參考代碼:

      /// <summary>
      /// 處理鏈接消息請求
      /// </summary>
      /// <param name="requestMessage"></param>
      /// <returns></returns>
      public override IResponseMessageBase OnLinkRequest(RequestMessageLink requestMessage)
      {
          var responseMessage = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage);
          responseMessage.Content = string.Format(@"您發(fā)送了一條連接信息:
      	Title:{0}
      	Description:{1}
      	Url:{2}", requestMessage.Title, requestMessage.Description, requestMessage.Url);
          return responseMessage;
      }
      

      參考文章

      微信公眾平臺技術(shù)文檔-官方

      Senparc.Weixin SDK + 官網(wǎng)示例源代碼

      RDIFramework.NET — 基于.NET的快速信息化系統(tǒng)開發(fā)框架 — 系列目錄

      RDIFramework.NET ━ .NET快速信息化系統(tǒng)開發(fā)框架 ━ 工作流程組件介紹

      RDIFramework.NET框架SOA解決方案(集Windows服務(wù)、WinForm形式與IIS形式發(fā)布)-分布式應(yīng)用

      RDIFramework.NET代碼生成器全新V3.5版本發(fā)布-重大升級


      一路走來數(shù)個年頭,感謝RDIFramework.NET框架的支持者與使用者,大家可以通過下面的地址了解詳情。

      RDIFramework.NET官方網(wǎng)站:http://www.rdiframework.net/

      RDIFramework.NET官方博客:http://blog.rdiframework.net/

      同時需要說明的,以后的所有技術(shù)文章以官方網(wǎng)站為準(zhǔn),歡迎大家收藏!

      RDIFramework.NET框架由專業(yè)團隊長期打造、一直在更新、一直在升級,請放心使用!

      歡迎關(guān)注RDIFramework.net框架官方公眾微信(微信號:guosisoft),及時了解最新動態(tài)。

      掃描二維碼立即關(guān)注

      微信號:guosisoft

      posted @ 2019-04-08 15:01  .NET快速開發(fā)框架  閱讀(2074)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲综合精品第一页| 国产精品一码二码三码四码| 灵寿县| 久久国产精品亚洲精品99| xxxx丰满少妇高潮| 国产国产午夜福利视频| 老师破女学生处特级毛ooo片| 欧美成人aaa片一区国产精品 | 久久人人爽人人爽人人片av| 91午夜福利在线观看精品| 一本精品99久久精品77| 无码人妻精品一区二区三区下载| 亚洲 制服 丝袜 无码| 久久天堂综合亚洲伊人HD妓女 | 成年无码av片在线蜜芽| 蜜臀av性久久久久蜜臀aⅴ麻豆| 欧美牲交videossexeso欧美| 午夜国产福利片在线观看| 无码激情亚洲一区| 精品无码一区二区三区电影| 精品av综合导航| 亚洲人成网站在线观看播放不卡| 无码av中文字幕久久专区| 常熟市| 亚洲人成小说网站色在线| 欧美成人黄在线观看| 99在线视频免费观看| 国产毛片基地| 97香蕉碰碰人妻国产欧美| 国产熟女真实乱精品51| 国产精品毛片av999999| 丰满人妻AV无码一区二区三区| 精品无人区一区二区三区在线| 精品国产乱码久久久久乱码| 悠悠色成人综合在线观看| 国产精品人妻中文字幕| 国产性色的免费视频网站| 久久大香线蕉国产精品免费| 国产精品免费AⅤ片在线观看| 精品少妇后入一区二区三区 | 亚洲男人AV天堂午夜在|