日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Volley 源码解析之网络请求

發布時間:2023/11/29 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Volley 源码解析之网络请求 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Volley源碼分析三部曲
Volley 源碼解析之網絡請求
Volley 源碼解析之圖片請求
Volley 源碼解析之緩存機制

Volley 是 Google 推出的一款網絡通信框架,非常適合數據量小、通信頻繁的網絡請求,支持并發、緩存和容易擴展、調試等;不過不太適合下載大文件、大量數據的網絡請求,因為volley在解析期間將響應放到內存中,我們可以使用okhttp或者系統提供的DownloadManager來下載文件。

一、簡單使用

首先在工程引入volley的library:

dependencies {implementation 'com.android.volley:volley:1.1.1' } 復制代碼

然后需要我們打開網絡權限,我這里直接貼出官網簡單請求的示例代碼:

final TextView mTextView = (TextView) findViewById(R.id.text); // ...// Instantiate the RequestQueue. RequestQueue queue = Volley.newRequestQueue(this); String url ="http://www.google.com";// Request a string response from the provided URL. StringRequest stringRequest = new StringRequest(Request.Method.GET, url,new Response.Listener<String>() {@Overridepublic void onResponse(String response) {// Display the first 500 characters of the response string.mTextView.setText("Response is: "+ response.substring(0,500));} }, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError error) {mTextView.setText("That didn't work!");} });// Add the request to the RequestQueue. queue.add(stringRequest); 復制代碼

使用相對簡單,回調直接在主線程,我們取消某個請求直接這樣操作:

  • 定義一個標記添加到requests中

    public static final String TAG = "MyTag"; StringRequest stringRequest; // Assume this exists. RequestQueue mRequestQueue; // Assume this exists.// Set the tag on the request. stringRequest.setTag(TAG);// Add the request to the RequestQueue. mRequestQueue.add(stringRequest); 復制代碼
  • 然后我們可以在 onStop() 中取消所有標記的請求

    @Override protected void onStop () {super.onStop();if (mRequestQueue != null) {mRequestQueue.cancelAll(TAG);} } 復制代碼
  • 二、源碼分析

    我們先從Volley這個類入手:

    public static RequestQueue newRequestQueue(Context context, BaseHttpStack stack) {BasicNetwork network;if (stack == null) {if (Build.VERSION.SDK_INT >= 9) {network = new BasicNetwork(new HurlStack());} else {String userAgent = "volley/0";try {String packageName = context.getPackageName();PackageInfo info =context.getPackageManager().getPackageInfo(packageName, /* flags= */ 0);userAgent = packageName + "/" + info.versionCode;} catch (NameNotFoundException e) {}network =new BasicNetwork(new HttpClientStack(AndroidHttpClient.newInstance(userAgent)));}} else {network = new BasicNetwork(stack);}return newRequestQueue(context, network); }private static RequestQueue newRequestQueue(Context context, Network network) {File cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR);RequestQueue queue = new RequestQueue(new DiskBasedCache(cacheDir), network);queue.start();return queue; }public static RequestQueue newRequestQueue(Context context) {return newRequestQueue(context, (BaseHttpStack) null); } 復制代碼

    當我們傳遞一個Context的時候,首先為BaseHttpStack為null,會執行到創建BaseHttpStack,BaseHttpStack是一個網絡具體的處理請求,Volley默認提供了基于HttpURLCollection的HurlStack和基于HttpClient的HttpClientStack。Android6.0移除了HttpClient,Google官方推薦使用HttpURLCollection類作為替換。所以這里在API大于9的版本是用的是HurlStack,為什么這樣選擇,詳情可見這篇博客Android訪問網絡,使用HttpURLConnection還是HttpClient?。我們使用的是默認的構造,BaseHttpStack傳入為null,如果我們想使用自定義的okhttp替換底層,我們直接繼承HttpStack重寫即可,也可以自定義Network和RequestQueue,Volley的高擴展性充分體現。接下來則創建一個Network對象,然后實例化RequestQueue,首先創建了一個用于緩存的文件夾,然后創建了一個磁盤緩存,將文件緩存到指定目錄的硬盤上,默認大小是5M,但是大小可以配置。接下來調用RequestQueue的start()方法進行啟動,我們進入這個方法查看一下:

    public void start() {stop(); mCacheDispatcher = new CacheDispatcher(mCacheQueue, mNetworkQueue, mCache, mDelivery);mCacheDispatcher.start();for (int i = 0; i < mDispatchers.length; i++) {NetworkDispatcher networkDispatcher =new NetworkDispatcher(mNetworkQueue, mNetwork, mCache, mDelivery);mDispatchers[i] = networkDispatcher;networkDispatcher.start();} } 復制代碼

    開始啟動的時候先停止所有的請求線程和網絡緩存線程,然后實例化一個緩存線程并運行,然后一個循環開啟DEFAULT_NETWORK_THREAD_POOL_SIZE(4)個網絡請求線程并運行,一共就是5個線程在后臺運行,不斷的等待網絡請求的到來。

    構造了RequestQueue之后,我們調用add()方法將相應的Request傳入就開始執行網絡請求了,我們看看這個方法:

    public <T> Request<T> add(Request<T> request) {//將請求隊列和請求關聯起來request.setRequestQueue(this);//添加到正在請求中但是還未完成的集合中synchronized (mCurrentRequests) {mCurrentRequests.add(request);}//設置請求的一個序列號,通過原子變量的incrementAndGet方法,//以原子方式給當前值加1并獲取新值實現請求的優先級request.setSequence(getSequenceNumber());//添加一個調試信息request.addMarker("add-to-queue");//如果不需要緩存則直接加到網絡的請求隊列,默認每一個請求都是緩存的,//如果不需要緩存需要調用Request的setShouldCache方法來修改if (!request.shouldCache()) {mNetworkQueue.add(request);return request;}//加到緩存的請求隊列mCacheQueue.add(request);return request; } 復制代碼

    關鍵地方都寫了注釋,主要作用就是將請求加到請求隊列,執行網絡請求或者從緩存中獲取結果。網絡和緩存的請求都是一個優先級阻塞隊列,按照優先級出隊。上面幾個關鍵步驟,添加到請求集合里面還有設置優先級以及添加到緩存和請求隊列都是線程安全的,要么加鎖,要么使用線程安全的隊列或者原子操作。

    接下來我們看看添加到CacheDispatcher緩存請求隊列的run方法:

    @Override public void run() {if (DEBUG) VolleyLog.v("start new dispatcher");Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);//初始化DiskBasedCache的緩存類mCache.initialize();while (true) {try {processRequest();} catch (InterruptedException e) {if (mQuit) {Thread.currentThread().interrupt();return;}VolleyLog.e("Ignoring spurious interrupt of CacheDispatcher thread; "+ "use quit() to terminate it");}} } 復制代碼

    接下來的重點是看看processRequest()這個方法:

    private void processRequest() throws InterruptedException {//從緩存隊列取出請求final Request<?> request = mCacheQueue.take();processRequest(request); }@VisibleForTesting void processRequest(final Request<?> request) throws InterruptedException {request.addMarker("cache-queue-take");// 如果請求被取消,我們可以通過RequestQueue的回調接口來監聽if (request.isCanceled()) {request.finish("cache-discard-canceled");return;}// 從緩存中獲取Cache.EntryCache.Entry entry = mCache.get(request.getCacheKey());//沒有取到緩存if (entry == null) {request.addMarker("cache-miss");// 緩存未命中,對于可緩存的請求先去檢查是否有相同的請求是否已經在運行中,//如果有的話先加入請求等待隊列,等待請求完成,返回true;如果返回false則表示第一次請求if (!mWaitingRequestManager.maybeAddToWaitingRequests(request)) {//加入到網絡請求的阻塞隊列mNetworkQueue.put(request);}return;}// 如果緩存完全過期,處理過程跟上面類似if (entry.isExpired()) {request.addMarker("cache-hit-expired");//設置請求緩存的entry到這個request中request.setCacheEntry(entry);if (!mWaitingRequestManager.maybeAddToWaitingRequests(request)) {mNetworkQueue.put(request);}return;}//緩存命中,將數據解析并返回到request的抽象方法中request.addMarker("cache-hit");Response<?> response =request.parseNetworkResponse(new NetworkResponse(entry.data, entry.responseHeaders));request.addMarker("cache-hit-parsed");//判斷請求結果是否需要刷新if (!entry.refreshNeeded()) {// 未過期的緩存命中,通過ExecutorDelivery回調給我們的request子類的接口中,// 我們在使用的時候就可以通過StringRequest、JsonRequest等拿到結果,// 切換到主線程也是在這個類里執行的mDelivery.postResponse(request, response);} else {request.addMarker("cache-hit-refresh-needed");request.setCacheEntry(entry);// 將這個響應標記為中間值,即這個響應是新鮮的,那么第二個響應正在請求隨時到來response.intermediate = true;if (!mWaitingRequestManager.maybeAddToWaitingRequests(request)) {//發起網絡請求,這里為什么直接調用上面的mNetworkQueue.put(request);呢,//主要是為了添加一個已經分發的標記,在響應分發的時候不再回調給用戶,//不然就回調了兩次mDelivery.postResponse(request,response,new Runnable() {@Overridepublic void run() {try {mNetworkQueue.put(request);} catch (InterruptedException e) {// Restore the interrupted statusThread.currentThread().interrupt();}}});} else {//這里第三個參數傳遞null,不用再去分發,因為已經有相同的請求已經在執行,//直接添加到了等待請求的列表中,然后返回的時候從已經執行的請求收到響應mDelivery.postResponse(request, response);}} } 復制代碼

    這部分主要是對請求的緩存判斷,是否過期以及需要刷新緩存。我們調用取消所有請求或者取消某個請求實質上就是對mCanceled這個變量賦值,然后在緩存線程或者網絡線程里面都回去判斷這個值,就完成了取消。上面的isExpired和refreshNeeded,兩個區別就是,前者如果過期就直接請求最新的內容,后者就是還在新鮮的時間內,但是把內容返回給用戶還是會發起請求,兩者一個與ttl值相比,另一個與softTtl相比。

    其中有一個WaitingRequestManager,如果有相同的請求那么就需要一個暫存的地方,這個類就是做的這個操作

    private static class WaitingRequestManager implements Request.NetworkRequestCompleteListener {//所有等待請求的集合,鍵是緩存的keyprivate final Map<String, List<Request<?>>> mWaitingRequests = new HashMap<>();private final CacheDispatcher mCacheDispatcher;WaitingRequestManager(CacheDispatcher cacheDispatcher) {mCacheDispatcher = cacheDispatcher;}//請求接受到一個有效的響應,后面等待的相同請求就可以使用這個響應@Overridepublic void onResponseReceived(Request<?> request, Response<?> response) {//如果緩存為空或者已經過期,那么就釋放等待的請求if (response.cacheEntry == null || response.cacheEntry.isExpired()) {onNoUsableResponseReceived(request);return;}String cacheKey = request.getCacheKey();//等待的請求的集合List<Request<?>> waitingRequests;synchronized (this) {//從map里面移除這個請求的集合waitingRequests = mWaitingRequests.remove(cacheKey);}if (waitingRequests != null) {if (VolleyLog.DEBUG) {VolleyLog.v("Releasing %d waiting requests for cacheKey=%s.",waitingRequests.size(), cacheKey);}// 里面所有的請求都分發到相應的回調執行,下面會講解for (Request<?> waiting : waitingRequests) {mCacheDispatcher.mDelivery.postResponse(waiting, response);}}}//沒有收到相應,則需要釋放請求@Overridepublic synchronized void onNoUsableResponseReceived(Request<?> request) {String cacheKey = request.getCacheKey();List<Request<?>> waitingRequests = mWaitingRequests.remove(cacheKey);if (waitingRequests != null && !waitingRequests.isEmpty()) {if (VolleyLog.DEBUG) {VolleyLog.v("%d waiting requests for cacheKey=%s; resend to network",waitingRequests.size(), cacheKey);}//下面這個請求執會重新執行,將這個移除添加到Request<?> nextInLine = waitingRequests.remove(0);//將剩下的請求放到等待請求的map中mWaitingRequests.put(cacheKey, waitingRequests);//在request里面注冊一個回調接口,因為重新開始請求,需要重新注冊一個監聽,//后面請求成功失敗以及取消都可以收到回調nextInLine.setNetworkRequestCompleteListener(this);try {//從上面if判斷方法可以得出:waitingRequests != null && !waitingRequests.isEmpty()//排除了第一次請求失敗、取消的情況,后面的那個條件則表示這個等待請求隊列必須要有一個請求,//同時滿足才會執行這里面的代碼,一般只要這里面的請求執行成功一次后續所有的請求都會被移除,//所以這里對多個請求的情況,失敗一次,那么后續的請求會繼續執行mCacheDispatcher.mNetworkQueue.put(nextInLine);} catch (InterruptedException iex) {VolleyLog.e("Couldn't add request to queue. %s", iex.toString());// Restore the interrupted status of the calling thread (i.e. NetworkDispatcher)Thread.currentThread().interrupt();// Quit the current CacheDispatcher thread.mCacheDispatcher.quit();}}}//對于可以緩存的請求,相同緩存的請求已經在運行中就添加到一個發送隊列,//等待運行中的隊列請求完成,返回true表示已經有請求在運行,false則是第一次執行private synchronized boolean maybeAddToWaitingRequests(Request<?> request) {String cacheKey = request.getCacheKey();// 存在相同的請求則把請求加入到相同緩存鍵的集合中if (mWaitingRequests.containsKey(cacheKey)) {// There is already a request in flight. Queue up.List<Request<?>> stagedRequests = mWaitingRequests.get(cacheKey);//如果包含相同的請求但是有可能是第二次請求,前面第一次請求插入null了if (stagedRequests == null) {stagedRequests = new ArrayList<>();}request.addMarker("waiting-for-response");stagedRequests.add(request);mWaitingRequests.put(cacheKey, stagedRequests);if (VolleyLog.DEBUG) {VolleyLog.d("Request for cacheKey=%s is in flight, putting on hold.", cacheKey);}return true;} else {//第一次請求那么則插入一個null,表示當前有一個請求正在運行mWaitingRequests.put(cacheKey, null);//注冊一個接口監聽request.setNetworkRequestCompleteListener(this);if (VolleyLog.DEBUG) {VolleyLog.d("new request, sending to network %s", cacheKey);}return false;}} } 復制代碼

    這個類主要是避免相同的請求多次請求,而且在NetworkDispatcher里面也會通過這個接口回調相應的值在這里執行,最終比如在網絡請求返回304、請求取消或者異常那么都會在這里來處理,如果收到響應則會把值回調給用戶,后面的請求也不會再去請求,如果無效的響應則會做一些釋放等待的請求操作,請求完成也會將后面相同的請求回調給用戶,三個方法都在不同的地方發揮作用。

    我們接下來看看NetworkDispatcher網絡請求隊列的run方法中的processRequest方法:

    @VisibleForTesting void processRequest(Request<?> request) {long startTimeMs = SystemClock.elapsedRealtime();try {request.addMarker("network-queue-take");// 請求被取消了,就不執行網絡請求,if (request.isCanceled()) {request.finish("network-discard-cancelled");request.notifyListenerResponseNotUsable();return;}addTrafficStatsTag(request);// 這里就是執行網絡請求的地方NetworkResponse networkResponse = mNetwork.performRequest(request);request.addMarker("network-http-complete");// 如果服務器返回304響應,即沒有修改過,//緩存依然是有效的并且是在需要刷新的有效期內,那么則不需要解析響應if (networkResponse.notModified && request.hasHadResponseDelivered()) {request.finish("not-modified");//沒有收到來自網絡的有效響應,釋放請求request.notifyListenerResponseNotUsable();return;}// 在工作線程中解析這些響應Response<?> response = request.parseNetworkResponse(networkResponse);request.addMarker("network-parse-complete");// 將緩存寫入到應用if (request.shouldCache() && response.cacheEntry != null) {mCache.put(request.getCacheKey(), response.cacheEntry);request.addMarker("network-cache-written");}// 標記此請求已將分發request.markDelivered();//將請求的響應回調給用戶mDelivery.postResponse(request, response);//請求接受到了一個響應,其他相同的請求可以使用這個響應request.notifyListenerResponseReceived(response);} catch (VolleyError volleyError) {...} } 復制代碼

    這里才是網絡請求的真正執行以及解析分發的地方,重點看兩個地方的代碼,執行和解析,我們先看看執行網絡請求這個代碼,執行的地方是BasicNetwork.performRequest,下面看看這個方法:

    @Override public NetworkResponse performRequest(Request<?> request) throws VolleyError {long requestStart = SystemClock.elapsedRealtime();while (true) {HttpResponse httpResponse = null;byte[] responseContents = null;List<Header> responseHeaders = Collections.emptyList();try {// 構造緩存的頭部,添加If-None-Match和If-Modified-Since,都是http/1.1中控制協商緩存的兩個字段, // If-None-Match:客服端再次發起請求時,攜帶上次請求返回的唯一標識Etag值,//服務端用攜帶的值和最后修改的值作對比,最后修改時間大于攜帶的字段值則返回200,否則304;// If-Modified-Since:客服端再次發起請求時,攜帶上次請求返回的Last-Modified值,//服務端用攜帶的值和服務器的Etag值作對比,一致則返回304Map<String, String> additionalRequestHeaders =getCacheHeaders(request.getCacheEntry());//因為現在一般的sdk都是大于9的,那么這里執行的就是HurlStack的executeRequest方法,//執行網絡請求,和我們平時使用HttpURLConnection請求網絡大致相同httpResponse = mBaseHttpStack.executeRequest(request, additionalRequestHeaders);int statusCode = httpResponse.getStatusCode();responseHeaders = httpResponse.getHeaders();// 服務端返回304時,那么就表示資源無更新,可以繼續使用緩存的值if (statusCode == HttpURLConnection.HTTP_NOT_MODIFIED) {Entry entry = request.getCacheEntry();if (entry == null) {return new NetworkResponse(HttpURLConnection.HTTP_NOT_MODIFIED,/* data= */ null,/* notModified= */ true,SystemClock.elapsedRealtime() - requestStart,responseHeaders);}// 將緩存頭和響應頭組合在一起,一次響應就完成了List<Header> combinedHeaders = combineHeaders(responseHeaders, entry);return new NetworkResponse(HttpURLConnection.HTTP_NOT_MODIFIED,entry.data,/* notModified= */ true,SystemClock.elapsedRealtime() - requestStart,combinedHeaders);}// 如果返回204,執行成功,沒有數據,這里需要檢查InputStream inputStream = httpResponse.getContent();if (inputStream != null) {responseContents =inputStreamToBytes(inputStream, httpResponse.getContentLength());} else {//返回204,就返回一個空的byte數組responseContents = new byte[0];}// if the request is slow, log it.long requestLifetime = SystemClock.elapsedRealtime() - requestStart;logSlowRequests(requestLifetime, request, responseContents, statusCode);if (statusCode < 200 || statusCode > 299) {throw new IOException();}return new NetworkResponse(statusCode,responseContents,/* notModified= */ false,SystemClock.elapsedRealtime() - requestStart,responseHeaders);} catch (SocketTimeoutException e) {//異常進行重新請求等...}} } 復制代碼

    這里主要執行了添加緩存頭并發起網絡請求,然后將返回值組裝成一個NetworkResponse值返回,接下來我們看看是如何解析這個值的,解析是由Request的子類去實現的,我們就看系統提供的StringRequest:

    @Override @SuppressWarnings("DefaultCharset") protected Response<String> parseNetworkResponse(NetworkResponse response) {String parsed;try {parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));} catch (UnsupportedEncodingException e) {// Since minSdkVersion = 8, we can't call// new String(response.data, Charset.defaultCharset())// So suppress the warning instead.parsed = new String(response.data);}return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); } 復制代碼

    我們可以看到將值組裝成一個String,然后組裝成一個Response返回,接下來看看這里如何將這個值回調給用戶的這個方法mDelivery.postResponse(request, response),這里我們先重點看看這個類ExecutorDelivery:

    public class ExecutorDelivery implements ResponseDelivery {//構造執行已提交的Runnable任務對象private final Executor mResponsePoster;//這里在RequestQueue構造參數中初始化,new ExecutorDelivery(new Handler(Looper.getMainLooper())),//那么這里runnable就通過綁定主線程的Looper的Handler對象投遞到主線程中執行public ExecutorDelivery(final Handler handler) {// Make an Executor that just wraps the handler.mResponsePoster =new Executor() {@Overridepublic void execute(Runnable command) {handler.post(command);}};}public ExecutorDelivery(Executor executor) {mResponsePoster = executor;}//這個方法就是我們NetworkDispatcher里面調用的方法,調用下面這個三個參數的構造方法@Overridepublic void postResponse(Request<?> request, Response<?> response) {postResponse(request, response, null);}@Overridepublic void postResponse(Request<?> request, Response<?> response, Runnable runnable) {request.markDelivered();request.addMarker("post-response");//構造了一個ResponseDeliveryRunnable類,傳入execute,現在這個runnable就是在主線程里執行mResponsePoster.execute(new ResponseDeliveryRunnable(request, response, runnable));}@Overridepublic void postError(Request<?> request, VolleyError error) {request.addMarker("post-error");Response<?> response = Response.error(error);mResponsePoster.execute(new ResponseDeliveryRunnable(request, response, null));}/** A Runnable used for delivering network responses to a listener on the main thread. */@SuppressWarnings("rawtypes")private static class ResponseDeliveryRunnable implements Runnable {private final Request mRequest;private final Response mResponse;private final Runnable mRunnable;public ResponseDeliveryRunnable(Request request, Response response, Runnable runnable) {mRequest = request;mResponse = response;mRunnable = runnable;}@SuppressWarnings("unchecked")@Overridepublic void run() {//請求取消,那么就不分發給用戶if (mRequest.isCanceled()) {mRequest.finish("canceled-at-delivery");return;}// 根據isSuccess這個值來提供相應的回調給用戶,調用Response會通過error的值是否為null來確定這個值,//我們調用VolleyError這個構造函數的時候就為這個值就為falseif (mResponse.isSuccess()) {mRequest.deliverResponse(mResponse.result);} else {mRequest.deliverError(mResponse.error);}// 如果這是一個在新鮮的時間內的請求的響應,就添加一個標記,否則就結束if (mResponse.intermediate) {mRequest.addMarker("intermediate-response");} else {mRequest.finish("done");}// 在CacheDispatcher里面當請求第一次請求時直接調用三個參數的構造方法,通過這個runnable就執行run方法if (mRunnable != null) {mRunnable.run();}}} }復制代碼

    上面方法主要是將值回調給用戶,那么整個網絡請求大致就完成了,其中還涉及很多細節的東西,但是大致流程是走通了,不得不說這個庫有很多值得我們學習的地方。

    三、總結

    現在我們看官網的一張圖,總結一下整個流程:

    • 藍色是主線程
    • 綠色是緩存線程
    • 黃色是網絡線程

    我們可以看到首先是請求添加到RequestQueue里,首先是添加到緩存隊列,然后查看是否已經緩存,如果有并且在有效期內的緩存直接回調給用戶,如果沒有查找到,那么則需要添加到網絡請求隊列重新請求并且解析響應、寫入緩存在發送到主線程給用戶回調。

    參考以及相關鏈接

    • 【第1250期】徹底理解瀏覽器的緩存機制
    • Android Volley完全解析(四),帶你從源碼的角度理解Volley
    • Volley 源碼解析
    • Volley 源碼解析

    轉載于:https://juejin.im/post/5c1c58b35188251f1f320e70

    總結

    以上是生活随笔為你收集整理的Volley 源码解析之网络请求的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    午夜一级免费电影 | 97精品国产97久久久久久久久久久久 | 欧美另类高清 | 懂色av一区二区在线播放 | 91片网| 精品资源在线 | 久久91网| 国产69精品久久99不卡的观看体验 | 在线成人中文字幕 | 国产国语在线 | av官网在线 | 在线久草视频 | www日韩在线 | 亚洲国产精品成人精品 | 国精产品999国精产 久久久久 | 成人性生交大片免费看中文网站 | 夜夜干夜夜 | 九九热中文字幕 | 在线免费亚洲 | 亚洲欧美精品一区二区 | 久久专区 | 国产日韩精品一区二区 | 国产精品久久久久久久久软件 | 国产成人一二片 | 成人国产一区 | 美女在线免费视频 | 欧日韩在线| 国产精品国内免费一区二区三区 | 免费色网站 | 天天色天天爱天天射综合 | 久久热首页 | 国产精品久久9 | 久久999精品 | 国产在线资源 | 欧美精品第一 | 一级黄色片在线 | 在线观看国产永久免费视频 | jizz18欧美18| 国产人免费人成免费视频 | 国产精品一区二区免费视频 | 成人啪啪18免费游戏链接 | 久久国产系列 | 九九免费在线观看视频 | 极品国产91在线网站 | 国产私拍在线 | 在线亚洲欧美日韩 | 久久国产精彩视频 | 久久婷婷国产色一区二区三区 | 色婷婷色| 婷婷色视频| 中文字幕在线成人 | 黄色av三级在线 | 亚洲黄色网络 | 色姑娘综合网 | 最近日本中文字幕a | 日韩精品在线免费观看 | 色噜噜狠狠狠狠色综合久不 | 日韩电影一区二区三区在线观看 | 黄色大片日本免费大片 | 在线看日韩| 日韩电影在线观看一区二区 | 久久精品波多野结衣 | 国产在线精品二区 | 激情五月播播久久久精品 | 99爱爱| 91片黄在线观 | 黄色三级视频片 | 91精品成人久久 | 欧美在线视频一区二区三区 | 成人动漫视频在线 | 麻豆国产精品va在线观看不卡 | 草久久久久久 | 人人看人人爱 | 国产精品123| 亚洲精品玖玖玖av在线看 | www.com.黄 | 久草线| 成年人免费观看在线视频 | 亚洲精品乱码白浆高清久久久久久 | 免费观看成人 | 狠狠成人 | 免费视频黄| 欧美激情视频一二区 | 深爱激情亚洲 | 天天干夜夜操视频 | 国产精品日韩精品 | 黄色成人小视频 | 欧美污污网站 | 香蕉网在线播放 | 国产香蕉久久精品综合网 | 婷婷综合亚洲 | 中文字幕精品一区 | 国产成人亚洲在线观看 | www.久久免费 | 国产精品一区二区久久精品爱涩 | 粉嫩av一区二区三区四区在线观看 | 免费在线观看日韩视频 | 欧美精彩视频 | 日韩av手机在线看 | www.一区二区三区 | 天天干天天草 | 天天干人人干 | 波多野结衣在线中文字幕 | 天天色草 | 97高清免费视频 | 97超级碰 | 欧美成人黄色 | 欧美日韩一区二区视频在线观看 | 欧美精品一区二区三区一线天视频 | 日韩av高潮 | 开心丁香婷婷深爱五月 | 国产系列精品av | 91av电影在线观看 | 欧美精品成人在线 | 国产一区二区三区免费视频 | 国产手机视频在线 | 国产美女精品人人做人人爽 | 欧美一级片在线观看视频 | 色综合天天干 | 2019免费中文字幕 | 亚洲精品视频二区 | 91漂亮少妇露脸在线播放 | 天天曰视频 | 亚洲五月 | 欧美日韩国产在线观看 | 五月天久久婷婷 | 欧美999| 日韩欧美国产免费播放 | 精品久久免费看 | 精品视频免费播放 | 欧美日韩午夜爽爽 | 亚州精品在线视频 | 国产黄色精品在线 | 欧美性色黄大片在线观看 | 99精品福利视频 | 免费看国产曰批40分钟 | 天无日天天操天天干 | 国产玖玖在线 | 国产在线美女 | 日韩欧美在线一区 | 国产精品午夜免费福利视频 | 五月婷婷深开心 | 一二三区av| 欧美久草视频 | 夜夜摸夜夜爽 | 日本激情动作片免费看 | 成年人看片| 色综合天天综合 | 亚洲欧美综合精品久久成人 | 中文字幕频道 | 探花国产在线 | 在线日本看片免费人成视久网 | 日韩二区精品 | 亚洲夜夜网 | 久久综合久久八八 | 国产精品综合在线观看 | 国产专区欧美专区 | 欧美不卡视频在线 | 久久视频在线观看 | 久久精品小视频 | 中文字幕一区二区三区乱码不卡 | 丁香视频全集免费观看 | 久久免费视频一区 | 国产97色 | 国产福利一区二区三区视频 | 国产资源免费 | av片一区二区| 热久久国产| 国产二区视频在线观看 | japanesexxxhd奶水| 国产91在线观 | 久久久久国产一区二区三区四区 | 国产一区二区久久精品 | 日日干夜夜干 | 中文字幕成人在线观看 | 四虎国产精品成人免费4hu | 五月视频 | 麻豆传媒一区二区 | 中文字幕4 | 中文字幕视频观看 | 欧美色伊人 | a资源在线| 成人h在线播放 | 久久国产品 | 日日操天天射 | 国产亚洲精品久久久久久久久久久久 | 永久免费在线 | 国产精品国产三级国产不产一地 | 久久精视频 | 久久这里只有精品9 | 91精品国产自产在线观看永久 | 天堂在线免费视频 | 免费特级黄毛片 | 色综合www| 青草视频网 | 久久久久电影网站 | 国产乱码精品一区二区三区介绍 | 深爱开心激情网 | japanesexxxhd奶水 91在线精品一区二区 | 久久国产精品第一页 | 国产精品视频在线观看 | 久久久久高清 | 国产精品久久久久久久免费大片 | 亚洲成人黄色av | 91成人网在线观看 | 国产麻豆传媒 | 天天射,天天干 | 国产欧美精品一区二区三区四区 | av日韩精品 | 四月婷婷在线观看 | 天天搞天天干 | 国产91电影在线观看 | 欧美日韩在线精品一区二区 | 久久99国产综合精品 | 午夜美女wwww | 97色免费视频 | 色综合色综合色综合 | 欧美精品中文在线免费观看 | 五月婷婷视频在线观看 | 欧美日韩中文在线 | 国产精品久久久久久久久久久久午夜 | 在线日韩av | 日本色小说视频 | 国产成人精品久久久久 | av超碰在线 | 国产一级在线观看视频 | 日本三级吹潮在线 | 国产日本亚洲高清 | 亚洲色图 校园春色 | 91福利视频免费 | 日韩精品专区 | 97在线看| 午夜精品久久久99热福利 | 免费三级黄色片 | 韩国av免费在线观看 | 久久久久久国产精品久久 | 婷婷色网 | 国产资源免费在线观看 | 国产精品久久一区二区三区, | 免费a v视频 | 亚洲美女在线一区 | 激情久久久久久久久久久久久久久久 | 精品91久久久久 | 午夜久久久久久久 | 在线看免费 | wwwwwww黄| 国产一区二区三区久久久 | 国产美女精品 | 国产剧情在线一区 | 久久成人综合 | 国产精品久久久久久久久久久久午夜 | 精品a级片| 天天射综合 | 超碰成人免费电影 | 日韩精品久久久久久 | 婷婷精品国产一区二区三区日韩 | 久草在线91 | 夜色成人网 | 国语久久 | 狠狠狠狠狠狠狠干 | 四虎8848免费高清在线观看 | 欧美在线视频一区二区三区 | 午夜精品一区二区三区在线观看 | 亚洲国产午夜 | 三级黄色免费片 | 日韩中文字幕网站 | 国产日韩精品一区二区在线观看播放 | 天天干人人 | 国产色小视频 | 亚洲 成人 一区 | 91福利视频免费 | 国产精品久久综合 | 综合精品在线 | 久日视频 | 国产小视频在线观看免费 | 国产亚洲在线视频 | 精品一区三区 | 日日操天天射 | 久久久国产日韩 | 久久久久亚洲精品男人的天堂 | aa级黄色大片 | 国产不卡av在线播放 | 国产视频日韩视频欧美视频 | 欧美成年网站 | 中文字幕网站 | 日韩精品中文字幕久久臀 | 91麻豆产精品久久久久久 | 精品国模一区二区三区 | 久久国产精品免费一区二区三区 | 手机av网站| 天天色成人 | 精品国产乱码久久久久久1区二区 | 免费观看视频的网站 | 国产原创在线观看 | 91久久国产露脸精品国产闺蜜 | 国产99一区视频免费 | 日韩视频在线播放 | 久久亚洲婷婷 | 九九九热 | 国产精品精品久久久 | av观看免费在线 | 中文字幕免费 | 国产剧情在线一区 | 国产精品国产三级国产aⅴ无密码 | 五月天婷婷免费视频 | 国产精品6999成人免费视频 | 久久精品视频在线观看免费 | 亚洲免费精品视频 | 91九色在线播放 | 国产精品亚洲视频 | 日韩电影中文,亚洲精品乱码 | 久久人人97超碰com | 亚洲一区二区三区四区在线视频 | 日韩色一区二区三区 | 99麻豆视频| 午夜骚影 | 午夜精品99久久免费 | 在线观看的av | 国产日韩精品一区二区三区在线 | 五月婷婷激情综合网 | 免费视频在线观看网站 | 免费h在线观看 | 黄a在线| 久久婷婷亚洲 | 久久久免费少妇 | 国产中文字幕亚洲 | 91麻豆网站| 中文字幕一区在线观看视频 | 免费观看视频的网站 | 色九九视频 | 天天干天天操天天搞 | 免费看国产一级片 | 日韩精品久久久久 | 国产福利小视频在线 | 久久99久久99免费视频 | 日日草视频 | 午夜精品一区二区三区在线播放 | 亚洲91精品 | 国产破处视频在线播放 | 国产69精品久久久久久久久久 | 波多野结衣在线观看一区二区三区 | 五月天综合网站 | 黄色软件大全网站 | 麻豆91在线观看 | 国内一级片在线观看 | 激情欧美一区二区三区 | 超碰97公开 | 久久综合电影 | 亚洲美女视频网 | 国产九九九精品视频 | 爱情影院aqdy鲁丝片二区 | 午夜精品视频免费在线观看 | 中文字幕高清免费日韩视频在线 | 色网站黄 | 欧美日韩在线视频免费 | 99久热| 911国产 | 一二区av | 国产永久免费 | 91在线一区二区 | 特级毛片aaa| 特级a毛片| 99视频精品全部免费 在线 | 欧美性生活免费看 | 欧美精品一区二区在线播放 | 五月网婷婷 | 99精品国产兔费观看久久99 | 国产精品成人自拍 | 国产专区日韩专区 | 天天插视频 | 久久99精品波多结衣一区 | 欧美一级乱黄 | 综合色中色 | 日韩久久电影 | 69国产成人综合久久精品欧美 | 天天av资源 | 国产五码一区 | 91mv.cool在线观看 | 久久免费观看视频 | 国产一区二区影院 | 日日夜夜国产 | 在线观av | 久久99视频免费观看 | 黄色精品国产 | 9在线观看免费高清完整 | 国产亚洲一区二区在线观看 | 狠狠色狠狠色合久久伊人 | 91在线看免费 | 成年人黄色在线观看 | 蜜臀av夜夜澡人人爽人人 | 91黄色在线观看 | 天堂av网站 | 成人国产精品久久久春色 | 天天天操天天天干 | 手机在线日韩视频 | av在线中文 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 在线精品视频免费播放 | 中国一 片免费观看 | 欧美一级电影片 | 免费看黄在线 | www.99在线观看 | 亚洲成人黄色在线观看 | 亚洲欧美在线观看视频 | av福利在线免费观看 | 天天躁天天狠天天透 | 色婷婷狠狠五月综合天色拍 | 婷婷在线综合 | 日日干美女 | 九九视频精品在线 | 国产在线观看,日本 | 五月婷婷在线综合 | 在线观看视频免费播放 | 久操视频在线播放 | 国产精品第一页在线 | 色狠狠综合天天综合综合 | 亚洲不卡av一区二区三区 | 国产一区二区三区免费在线观看 | 国产色久 | 密桃av在线| 国产色视频123区 | 国产综合激情 | 久久夜视频| 国产亚洲午夜高清国产拍精品 | 91视频啪 | 久久久久久久久久网站 | 天天操天天插 | 国产精品久久久久久久久久久免费看 | 91视频电影 | 91av视频免费观看 | www视频在线播放 | 国产精品黄色av | 911国产在线观看 | 国产精品6 | 国产一级片在线播放 | 欧美日韩在线播放一区 | 国产一区二区中文字幕 | 探花视频免费在线观看 | 天天综合网在线观看 | 欧产日产国产69 | 免费高清在线观看成人 | 免费看亚洲毛片 | 日韩高清在线观看 | 久久精品一二三区 | 一本一本久久a久久精品综合妖精 | aaa毛片视频 | 在线国产一区二区三区 | 色婷婷97 | 欧美污污网站 | 久久在线电影 | 欧美日韩有码 | 日日日干 | 国产小视频免费在线观看 | 最近中文字幕免费 | 黄色福利视频网站 | 久久久久久久久久影视 | 亚洲视频久久久久 | 日韩视频在线不卡 | 免费十分钟 | 成人午夜电影免费在线观看 | 二区三区中文字幕 | 免费看片在线观看 | 国产一卡在线 | 亚洲成a人片综合在线 | av免费网站在线观看 | 一级做a视频 | 天天干天天看 | 五月婷综合 | 国产黄色免费电影 | 人人舔人人爽 | 久久亚洲免费 | 91精品国产99久久久久久红楼 | 激情欧美丁香 | 天天色天天操综合 | 成人在线免费视频 | 亚洲欧洲xxxx | 99久久超碰中文字幕伊人 | 看av免费| 久久久久99999 | av中文在线观看 | 91 中文字幕 | 久久午夜精品视频 | 四虎国产精品免费观看视频优播 | 中文字幕国产一区 | 久久免费电影网 | 久99精品 | 久久婷综合 | www.伊人网 | 91av小视频 | 一级a性色生活片久久毛片波多野 | 激情丁香5月 | www.久久久com| 天堂网一区 | 免费在线看v | 中文字幕av在线 | 中文字幕 国产视频 | 中文字幕在线不卡国产视频 | 色综合天天色综合 | 成人h动漫精品一区二 | 久99久在线视频 | 国产黄色精品在线观看 | 国产精品美乳一区二区免费 | 欧美精品久久久久久久免费 | 色片网站在线观看 | 亚洲人人射 | 色综合在 | 天天爽夜夜爽人人爽一区二区 | 久久精品综合 | 激情一区二区三区欧美 | 免费视频网 | 国产91精品一区二区麻豆网站 | 亚洲精品中文字幕视频 | 一级欧美一级日韩 | 国产一区在线不卡 | 99久久久久免费精品国产 | 免费高清在线观看成人 | 在线韩国电影免费观影完整版 | 欧美日韩高清一区 | 日本中文字幕高清 | 国产美女视频网站 | 成人av.com | 国产69精品久久app免费版 | 四虎影视av | 丁香六月在线观看 | 黄色福利视频网站 | 久久久久久高潮国产精品视 | 日韩免费二区 | 色射色 | 亚洲 欧美 变态 国产 另类 | 中文字幕一区二区三区在线播放 | 国产91精品一区二区麻豆网站 | 日日添夜夜添 | 999视频在线观看 | 国产精品va视频 | 99色精品视频 | 夜夜躁狠狠躁日日躁 | 欧美精品一区二区免费 | 一区二区三区免费在线观看视频 | 免费在线精品视频 | 97涩涩视频| 国产一级片毛片 | 欧美一区二区三区在线 | 天天天干天天射天天天操 | 成人免费共享视频 | 天天操福利视频 | 麻豆影视网站 | 国产一级不卡视频 | 精品国产一二三四区 | 免费看搞黄视频网站 | 99精品视频免费观看 | 808电影免费观看三年 | 亚州成人av在线 | 国产成人久久精品77777 | 成人av电影免费在线观看 | 欧美淫aaa免费观看 日韩激情免费视频 | 国产精品999久久久 久产久精国产品 | 久久96国产精品久久99软件 | 免费看特级毛片 | 欧美亚洲国产日韩 | 国产精品手机在线观看 | 国产手机在线观看 | 亚洲精品人人 | 欧美精品生活片 | 日韩av免费大片 | 香蕉一区 | 日韩高清一区二区 | 国产 欧美 日韩 | 激情网站网址 | 国产一区影院 | 日韩视频一区二区三区 | 久久久91精品国产一区二区三区 | 日韩精品中文字幕在线播放 | 久久久久免费精品 | 在线导航福利 | 青青河边草观看完整版高清 | 狠狠操综合网 | 青草视频在线播放 | 在线成人一区 | 天天操欧美 | 久久久久久久久久久久久影院 | 久久高清精品 | 一本一本久久a久久精品综合小说 | 久久久国产精品成人免费 | 久久中文网 | 国产精品一区二区在线观看 | 一本一道波多野毛片中文在线 | 日本护士三级少妇三级999 | 日本最新高清不卡中文字幕 | 69久久99精品久久久久婷婷 | 91中文字幕永久在线 | 免费在线一区二区 | 91夜夜夜 | 亚洲天堂社区 | 日韩免费在线看 | 日韩 在线a | 国产精品黑丝在线观看 | 国产一级片不卡 | 国产福利午夜 | 黄色成人小视频 | 欧美亚洲精品一区 | 伊人五月天av | 成人免费看视频 | 日本久久精品视频 | av福利资源 | 久久永久视频 | 狠狠狠狠狠色综合 | 国产中文字幕一区二区三区 | 色婷婷久久久综合中文字幕 | 亚洲国产精品久久久久婷婷884 | 色在线免费 | 国产99久久久久久免费看 | 久久精品一区二区三 | 国产手机精品视频 | 国产96在线观看 | 亚洲精品啊啊啊 | 九九九在线观看视频 | 天天躁日日躁狠狠躁 | 又大又硬又黄又爽视频在线观看 | 久久久久99999 | 欧美夫妻生活视频 | 国产69精品久久久久99 | 精品视频国产 | 伊人五月综合 | 国产成人免费网站 | 久久综合九色综合97_ 久久久 | 久久狠狠干 | 免费福利片| 97碰碰精品嫩模在线播放 | 亚洲精品mv在线观看 | 九九免费精品视频在线观看 | 久久精品99精品国产香蕉 | 日韩欧美精品一区二区 | 色婷婷激婷婷情综天天 | 韩国一区二区三区视频 | 五月天激情视频 | 久热精品国产 | 最新中文在线视频 | 久草免费在线观看 | 亚洲国产影院av久久久久 | 国产精品久久久久久久电影 | 日韩在线免费视频 | 高清av免费看 | 亚洲成人免费 | 成年人国产在线观看 | 高清久久久久久 | 久久综合狠狠综合久久激情 | 中文字幕av全部资源www中文字幕在线观看 | 亚洲精品国产欧美在线观看 | 午夜婷婷在线播放 | 国产中文字幕视频在线 | 亚洲午夜不卡 | 夜夜操综合网 | av专区在线| 国产精华国产精品 | 免费在线观看黄色网 | 欧美色图东方 | 人人揉人人揉人人揉人人揉97 | www.超碰97.com | 99热国产在线 | 人人爽久久涩噜噜噜网站 | 91免费看黄 | 日日日视频 | 成人三级网址 | 久久福利精品 | 天天干天天射天天插 | 日韩电影中文 | 999久久a精品合区久久久 | 人人爽久久久噜噜噜电影 | 99精品一区| 天天干夜夜干 | 91九色成人| 国产美女精品视频免费观看 | 波多野结衣电影一区 | 精品国偷自产国产一区 | 91九色porn在线资源 | 中文字幕在线观看一区二区 | 国产精品久久久视频 | 亚洲欧洲国产视频 | 91重口视频 | 91精品办公室少妇高潮对白 | 久久精品欧美一区二区三区麻豆 | 91精品国产高清自在线观看 | 99亚洲精品 | 国产精品久久久久永久免费 | 国产亚洲精品久久19p | 欧美性春潮| www.香蕉视频| 黄色av影院 | 99久久久久久久 | 99热超碰 | 久99久视频| 中文在线资源 | 日韩精品免费在线观看视频 | 亚洲色图色 | 欧美乱淫视频 | 在线国产中文字幕 | 国产精品久久久久久久久久了 | 国产精品完整版 | 国产精品免费一区二区三区在线观看 | 国产不卡在线观看视频 | 三级av中文字幕 | 97色资源 | 六月婷婷色| 综合婷婷| 久久精品国产亚洲精品 | 麻豆视屏 | 欧美日韩免费在线观看视频 | 国内精品毛片 | 97超碰免费 | 国产99久久99热这里精品5 | 免费看成人 | 欧美日韩国产欧美 | 国产在线观看免费 | 97超碰人人澡人人爱学生 | 亚洲欧洲精品一区 | 免费av福利| 成人在线播放免费观看 | 韩国av一区二区三区在线观看 | 欧美成人基地 | 一区二区三区国 | 综合色狠狠 | 九九天堂| 精品一区免费 | 亚洲成年人av| 久久影院中文字幕 | 国产免费人成xvideos视频 | 2019中文字幕第一页 | 日韩性xxxx| 日本护士撒尿xxxx18 | 美国人与动物xxxx | 免费视频二区 | 视频成人免费 | 日韩综合色 | 婷婷色五 | 久草男人天堂 | www.狠狠干 | 五月婷婷中文网 | 久久久久久久久久久久久影院 | 国产色拍拍拍拍在线精品 | 亚洲专区中文字幕 | 日日干 天天干 | 日本不卡一区二区 | 亚洲精品大全 | 国产亚洲在线视频 | 精品亚洲成a人在线观看 | 人人爱夜夜操 | 最近中文字幕mv免费高清在线 | 亚洲资源在线 | 在线国产不卡 | 91视频免费看网站 | 国产精品一区二区三区久久 | 97超碰在线人人 | 黄色中文字幕在线 | 精品在线亚洲视频 | www.久久久精品 | 久久综合五月天 | 国产一二区精品 | 精品一区二区三区久久久 | 激情婷婷网 | 新版资源中文在线观看 | 精品一区二区久久久久久久网站 | 91九色蝌蚪在线 | 国产在线第三页 | 91污在线| 婷婷丁香在线视频 | 2018好看的中文在线观看 | 久福利 | 久久久免费在线观看 | 不卡av在线免费观看 | 一区二区三高清 | 国产精品99久久久精品免费观看 | 国产免费一区二区三区网站免费 | 97色婷婷成人综合在线观看 | 成人资源在线观看 | 久久五月婷婷综合 | 成年人在线播放视频 | 午夜精品电影一区二区在线 | 夜夜操天天操 | 在线观看av免费 | 美女视频免费一区二区 | 国产亚洲日 | 中文字幕免费高清在线观看 | 精品一区二区在线观看 | 欧美大片mv免费 | 久久高清av | 欧美日韩xx | 色wwwww| 精品99久久久久久 | 精品久久久久免费极品大片 | 国产在线观看污片 | 久久丁香| 黄色福利网 | 亚洲成人动漫在线观看 | 人人澡超碰碰97碰碰碰软件 | 久久国产精品99久久久久久丝袜 | 天天射天天射天天 | 91精品在线麻豆 | 91麻豆文化传媒在线观看 | 色婷婷六月天 | 香蕉视频在线看 | 成年人免费看 | 国产一级黄大片 | 日日日天天天 | 四虎成人精品在永久免费 | 久久综合婷婷综合 | 天天在线免费视频 | 久久久久久久久久久久久久av | 久久一区二 | 九色精品 | 精品在线一区二区三区 | 在线观看的a站 | 在线精品视频在线观看高清 | 天天玩夜夜操 | 欧洲av在线| 久久精品欧美日韩精品 | 久久精品免费播放 | 免费一级特黄毛大片 | 成人黄色影片在线 | 日本精品一区二区三区在线观看 | 成人资源站 | 五月婷在线观看 | wwxxxx日本 | 91看片淫黄大片一级在线观看 | 久久久91精品国产一区二区三区 | 欧美性黄网官网 | 福利视频第一页 | 在线久热 | 亚洲女人天堂成人av在线 | 欧美日韩在线免费视频 | 最新影院 | 日日爱av| 在线观看视频你懂的 | 欧美三级免费 | 日韩精品视频免费专区在线播放 | 麻豆91视频| japanesexxx乱女另类 | 欧美在线观看视频一区二区 | 国产h片在线观看 | 精品中文字幕视频 | 国产免费精彩视频 | 国产麻豆剧果冻传媒视频播放量 | 国产精品国内免费一区二区三区 | 毛片永久免费 | 欧洲亚洲精品 | 日韩精品中文字幕在线观看 | 免费在线观看日韩视频 | 国产精品6| 最近免费观看的电影完整版 | 天天操天天色天天射 | 国产精品一区二区在线观看免费 | 韩国一区视频 | 91porny九色91啦中文 | 日韩午夜视频在线观看 | 久久久久成人免费 | 精品一区久久 | 精精国产xxxx视频在线播放 | 国产亚洲成人网 | 日韩在线观看视频免费 | 免费男女羞羞的视频网站中文字幕 | 中文字幕一区二区三区久久蜜桃 | 亚洲人成精品久久久久 | 中文字幕一区二区三区在线观看 | 亚洲 中文 欧美 日韩vr 在线 | 国产 视频 高清 免费 | 六月婷婷网 | 粉嫩av一区二区三区四区五区 | 成人在线免费看视频 | 国产精品黄 | 欧美日韩三级 | 国产伦精品一区二区三区免费 | 波多野结衣久久资源 | 九九热只有精品 | 日本精品久久久久 | 99久久网站 | 中文字幕国产 | 黄色一级大片在线免费看国产一 | 香蕉视频网站在线观看 | 国产精品午夜久久久久久99热 | 国产精品久久久网站 | 欧美精品久久久久久久免费 | 美女免费电影 | www..com毛片| 欧美在线一 | 高清不卡一区二区三区 | 日韩欧美视频一区二区三区 | 中文字幕资源网 国产 | 日韩欧在线 | 免费成人在线电影 | 国产手机av | 99视频国产精品 | 天堂中文在线播放 | 天天干天天操天天射 | 有码中文字幕 | 亚洲特级片 | 天堂在线视频免费观看 | 开心色激情网 | 久久狠狠亚洲综合 | 天天操天天干天天插 | 成人性生交大片免费观看网站 | 国产免费久久av | 视频在线在亚洲 | 伊人天堂av | 国产精品久久久777 成人手机在线视频 | 在线免费观看黄色小说 | 成人毛片a | 国内久久看 | 色综合五月天 | 国产四虎影院 | 日韩成人黄色av | 日韩剧情 | 久久久黄色av | 免费不卡中文字幕视频 | 国内揄拍国产精品 | 免费av黄色| 国产精品女教师 | 日韩av电影国产 | 国产伦理一区二区三区 | 亚洲精品美女免费 | 成人免费视频网站在线观看 | 五月婷婷开心中文字幕 | av免费观看高清 | 波多野结衣在线播放一区 | 国产精品乱码一区二区视频 | 日韩免费不卡视频 | 久久综合免费视频影院 | 最新色站| 国产精品永久免费观看 | 久久躁日日躁aaaaxxxx | 99视频在线看 | 久久综合狠狠综合 | 日日碰狠狠躁久久躁综合网 | 欧美精品一二三 | 国产区精品区 | 国产视频在线观看一区二区 | 天堂av在线中文在线 | 黄色1级毛片 | 国产日韩在线视频 | 国产一区二区高清视频 | 91在线影院 | 亚洲永久精品在线观看 | 在线观看免费成人av | 日韩日韩日韩日韩 | 国产小视频精品 | 欧美一级电影 | 麻豆精品91| av大全在线播放 | 久草免费手机视频 | 久久久久欠精品国产毛片国产毛生 | 亚洲日本欧美在线 | 午夜精品久久久久久久久久 | 成人av高清在线 | 337p西西人体大胆瓣开下部 | 日韩大片在线播放 | 日日爱999 | 久久久久久久久精 | 免费观看mv大片高清 | 免费日韩 精品中文字幕视频在线 | 国产精品va视频 | 99久热在线精品视频观看 | 黄色一级免费电影 | 国产清纯在线 | 国产一级不卡毛片 | 99精品视频免费看 | 六月丁香婷 | 久久xx视频| 国产高清免费观看 | 中文字幕一区二区三区四区久久 | 中文字幕在线资源 | 精品国产三级 | 一区二区三区免费看 | av一级片网站 | 午夜精品久久久久99热app | 天天操夜夜操天天射 | 国精产品满18岁在线 | 4438全国亚洲精品观看视频 | 麻豆视频91 | 亚洲涩涩涩涩涩涩 | 最新中文字幕 | 免费在线中文字幕 | 人人爽人人搞 | 国产精品资源在线观看 | 日日夜夜狠狠 | 天天综合网久久综合网 | 91精品网站 | 国产精品 亚洲精品 | 午夜久久美女 | av在线直接看 | 黄色在线免费观看网址 | 午夜精品视频一区二区三区在线看 | 久久久久久久毛片 | 久久婷婷综合激情 | 伊人中文在线 | 欧美视频国产视频 | 久久人人爽人人爽人人片av软件 | 久久午夜国产精品 | 又湿又紧又大又爽a视频国产 | 99热最新地址 | 国内综合精品午夜久久资源 |