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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

使用Volley+OkHttp+Gson加速Android网络开发

發布時間:2024/8/1 Android 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Volley+OkHttp+Gson加速Android网络开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在Android應用開發中,我們不可避免的需要網絡操作,尤其是在與服務器頻繁的交互過程中,更是需要大量的重復編碼:HttpURLConnection,Thread, AsyncTask, ?Service等,十分復雜又容易出錯。在2013年Google I/O大會上推出了網絡通信框架——Volley。它可以極大簡化HTTP通信,加載網絡圖片的操作,并且在小數據量的頻繁網絡交互中性能表現良好。不過,它不適合進行大文件的上傳下載。


基于上述原因,在最近的項目中我學習使用了Volley網絡庫,然而Volley在使用中也存在一些問題:


比如,Volley自帶的JsonRequest只支持JSONObject,而如果想要使用Gson,還需要自己定制Request。


另外,默認情況下,Volley在Froyo使用Apache Http stack作為其傳輸層,而在Gingerbread及之后的版本上使用HttpURLConnection stack作為傳輸層。很自然我們想到,能不能將口碑十分好的OkHttp替換為Volley的傳輸層呢。


最后,很多時候我們需要一些小文件的上傳操作(如用戶頭像),能不能使用Volley完成這個任務呢。


所以,本文描述一種結合使用Volley+OkHttp+Gson進行快速網絡開發的方法,并給出一些網絡接口封裝的例子。


首先,要將OkHttp替換為Volley的傳輸層,需要實現一個OkHttpStack類,然后在實例化Volley的RequestQueue時將之替換即可:

RequestQueue mQueue = Volley.newRequestQueue(this, new OkHttpStack(new OkHttpClient()));

OkHttpStack類的代碼如下(來自GitHub,詳見文后參考資料部分,這里為了方便網絡不佳的讀者貼出來):

/*** The MIT License (MIT)** Copyright (c) 2015 Circle Internet Financial** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated documentation files (the "Software"), to deal* in the Software without restriction, including without limitation the rights* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell* copies of the Software, and to permit persons to whom the Software is* furnished to do so, subject to the following conditions:** The above copyright notice and this permission notice shall be included in* all copies or substantial portions of the Software.** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN* THE SOFTWARE.*/import com.android.volley.AuthFailureError; import com.android.volley.Request; import com.android.volley.toolbox.HttpStack; import com.squareup.okhttp.Call; import com.squareup.okhttp.Headers; import com.squareup.okhttp.MediaType; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Protocol; import com.squareup.okhttp.RequestBody; import com.squareup.okhttp.Response; import com.squareup.okhttp.ResponseBody;import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.ProtocolVersion; import org.apache.http.StatusLine; import org.apache.http.entity.BasicHttpEntity; import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicHttpResponse; import org.apache.http.message.BasicStatusLine;import java.io.IOException; import java.util.Map; import java.util.concurrent.TimeUnit;/*** OkHttp backed {@link com.android.volley.toolbox.HttpStack HttpStack} that does not* use okhttp-urlconnection*/ public class OkHttpStack implements HttpStack {private final OkHttpClient mClient;public OkHttpStack(OkHttpClient client) {this.mClient = client;}@Overridepublic HttpResponse performRequest(Request<?> request, Map<String, String> additionalHeaders)throws IOException, AuthFailureError {OkHttpClient client = mClient.clone();int timeoutMs = request.getTimeoutMs();client.setConnectTimeout(timeoutMs, TimeUnit.MILLISECONDS);client.setReadTimeout(timeoutMs, TimeUnit.MILLISECONDS);client.setWriteTimeout(timeoutMs, TimeUnit.MILLISECONDS);com.squareup.okhttp.Request.Builder okHttpRequestBuilder = new com.squareup.okhttp.Request.Builder();okHttpRequestBuilder.url(request.getUrl());Map<String, String> headers = request.getHeaders();for (final String name : headers.keySet()) {okHttpRequestBuilder.addHeader(name, headers.get(name));}for (final String name : additionalHeaders.keySet()) {okHttpRequestBuilder.addHeader(name, additionalHeaders.get(name));}setConnectionParametersForRequest(okHttpRequestBuilder, request);com.squareup.okhttp.Request okHttpRequest = okHttpRequestBuilder.build();Call okHttpCall = client.newCall(okHttpRequest);Response okHttpResponse = okHttpCall.execute();StatusLine responseStatus = new BasicStatusLine(parseProtocol(okHttpResponse.protocol()), okHttpResponse.code(), okHttpResponse.message());BasicHttpResponse response = new BasicHttpResponse(responseStatus);response.setEntity(entityFromOkHttpResponse(okHttpResponse));Headers responseHeaders = okHttpResponse.headers();for (int i = 0, len = responseHeaders.size(); i < len; i++) {final String name = responseHeaders.name(i), value = responseHeaders.value(i);if (name != null) {response.addHeader(new BasicHeader(name, value));}}return response;}private static HttpEntity entityFromOkHttpResponse(Response r) throws IOException {BasicHttpEntity entity = new BasicHttpEntity();ResponseBody body = r.body();entity.setContent(body.byteStream());entity.setContentLength(body.contentLength());entity.setContentEncoding(r.header("Content-Encoding"));if (body.contentType() != null) {entity.setContentType(body.contentType().type());}return entity;}@SuppressWarnings("deprecation")private static void setConnectionParametersForRequest(com.squareup.okhttp.Request.Builder builder, Request<?> request)throws IOException, AuthFailureError {switch (request.getMethod()) {case Request.Method.DEPRECATED_GET_OR_POST:// Ensure backwards compatibility. Volley assumes a request with a null body is a GET.byte[] postBody = request.getPostBody();if (postBody != null) {builder.post(RequestBody.create(MediaType.parse(request.getPostBodyContentType()), postBody));}break;case Request.Method.GET:builder.get();break;case Request.Method.DELETE:builder.delete();break;case Request.Method.POST:builder.post(createRequestBody(request));break;case Request.Method.PUT:builder.put(createRequestBody(request));break;case Request.Method.HEAD:builder.head();break;case Request.Method.OPTIONS:builder.method("OPTIONS", null);break;case Request.Method.TRACE:builder.method("TRACE", null);break;case Request.Method.PATCH:builder.patch(createRequestBody(request));break;default:throw new IllegalStateException("Unknown method type.");}}private static ProtocolVersion parseProtocol(final Protocol p) {switch (p) {case HTTP_1_0:return new ProtocolVersion("HTTP", 1, 0);case HTTP_1_1:return new ProtocolVersion("HTTP", 1, 1);case SPDY_3:return new ProtocolVersion("SPDY", 3, 1);case HTTP_2:return new ProtocolVersion("HTTP", 2, 0);}throw new IllegalAccessError("Unkwown protocol");}private static RequestBody createRequestBody(Request r) throws AuthFailureError {final byte[] body = r.getBody();if (body == null) return null;return RequestBody.create(MediaType.parse(r.getBodyContentType()), body);} }


然后,我們需要實現使用Gson的Request類:

import com.android.volley.AuthFailureError; import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.toolbox.HttpHeaderParser; import com.google.gson.Gson;import java.io.UnsupportedEncodingException; import java.lang.reflect.Type; import java.util.Map;import me.zq.youjoin.utils.LogUtils; import me.zq.youjoin.utils.StringUtils;public class PostObjectRequest<T> extends Request<T> {private ResponseListener listener;private Gson gson;private Type clazz;private Map<String, String> params;public PostObjectRequest(String url, Map<String, String> params, Type type,ResponseListener listener){super(Method.POST, url, listener);this.listener = listener;this.clazz = type;this.params = params;this.gson = new Gson();}@Overrideprotected Response<T> parseNetworkResponse(NetworkResponse response){try{T result;String jsonString =new String(response.data, HttpHeaderParser.parseCharset(response.headers));LogUtils.d("hehe", jsonString);result = gson.fromJson(StringUtils.FixJsonString(jsonString), clazz);return Response.success(result,HttpHeaderParser.parseCacheHeaders(response));}catch (UnsupportedEncodingException e) {return Response.error(new ParseError(e));}}@Overrideprotected void deliverResponse(T response){listener.onResponse(response);}@Overrideprotected Map<String, String> getParams() throws AuthFailureError{return params;}}



最后,我們來實現圖片上傳部分。由于我們希望在上傳圖片的時候添加一些參數,例如用戶id等,導致這部分的實現比較復雜。雖然我們可以將這些信息存儲在圖片文件名中實現傳遞,但這總歸是取巧的辦法。比較正規一點的方法還是研究網頁表單提交時的Post請求的格式,然后自己構造一個合法的Post請求。我們可以使用Chorme的開發者工具來抓取Post請求,研究其格式,下圖為我抓取的一個帶圖片和參數的表單Post請求:


從圖中可以看出,我們只需要重寫getBody()方法,逐行仿照Post格式寫入我們自己的圖片和參數,就可實現參數+圖片的上傳。多張圖片的上傳原理相同。另外,圖片要注意在上傳之前進行壓縮處理。另外,為了方便服務器解析多張圖片,將圖片參數設置為uploadedfile[index]格式。代碼如下:

import android.util.Log;import com.android.volley.AuthFailureError; import com.android.volley.DefaultRetryPolicy; import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.toolbox.HttpHeaderParser; import com.google.gson.Gson;import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.lang.reflect.Type; import java.util.List; import java.util.Map;import me.zq.youjoin.model.ImageInfo; import me.zq.youjoin.utils.StringUtils;public class PostUploadRequest<T> extends Request<T> {/*** 正確數據的時候回掉用*/private ResponseListener mListener ;/*請求 數據通過參數的形式傳入*/private List<ImageInfo> mListItem ;private static final String BOUNDARY = "--------------520-13-14"; //數據分隔線private static final String MULTIPART_FORM_DATA = "multipart/form-data";//使用表單數據方法提交private static final String TAG = "hehe_upload_request";private static final String PARAM = "uploadedfile";//圖片的參數,<span style="font-family: Arial, Helvetica, sans-serif;">為了上傳多張圖片,在下面的封裝中使用uploadedfile[index]格式作為圖片參數</span>private Map<String, String> params;private Gson gson;private Type clazz;public PostUploadRequest(String url, List<ImageInfo> listItem,Map<String, String> params,Type type, ResponseListener listener) {super(Method.POST, url, listener);this.mListener = listener ;this.params = params;this.gson = new Gson();this.clazz = type;setShouldCache(false);mListItem = listItem ;//設置請求的響應事件,因為文件上傳需要較長的時間,所以在這里加大了,設為5秒setRetryPolicy(new DefaultRetryPolicy(5000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));}/*** 這里開始解析數據* @param response Response from the network* @return*/@Overrideprotected Response<T> parseNetworkResponse(NetworkResponse response) {try {String mString =new String(response.data, HttpHeaderParser.parseCharset(response.headers));Log.v(TAG, "mString = " + mString);T result = gson.fromJson(StringUtils.FixJsonString(mString), clazz);return Response.success(result,HttpHeaderParser.parseCacheHeaders(response));} catch (UnsupportedEncodingException e) {return Response.error(new ParseError(e));}}/*** 回調正確的數據* @param response The parsed response returned by*/@Overrideprotected void deliverResponse(T response) {mListener.onResponse(response);} //重寫getBody()方法,封裝Post包@Overridepublic byte[] getBody() throws AuthFailureError {if (mListItem == null||mListItem.size() == 0){return super.getBody() ;}ByteArrayOutputStream bos = new ByteArrayOutputStream() ;if(!params.isEmpty()) {StringBuilder sbParams = new StringBuilder();for (Map.Entry<String, String> o : params.entrySet()) {Map.Entry entry = (Map.Entry) o;/*第一行*///`"--" + BOUNDARY + "\r\n"`sbParams.append("--" + BOUNDARY);sbParams.append("\r\n");/*第二行*///Content-Disposition: form-data; name="參數的名稱"; + 參數 + "\r\n"sbParams.append("Content-Disposition: form-data;");sbParams.append(" name=\"");sbParams.append((String) entry.getKey());sbParams.append("\"");sbParams.append("\r\n");sbParams.append("\r\n");sbParams.append((String) entry.getValue());sbParams.append("\r\n");}try {bos.write(sbParams.toString().getBytes("utf-8")); // bos.write("\r\n".getBytes("utf-8"));} catch (IOException e) {e.printStackTrace();}}int N = mListItem.size() ;ImageInfo imageInfo ;for (int i = 0; i < N ;i++){imageInfo = mListItem.get(i) ;StringBuilder sb= new StringBuilder() ;/*第一行*///`"--" + BOUNDARY + "\r\n"`sb.append("--"+BOUNDARY);sb.append("\r\n") ;/*第二行*///Content-Disposition: form-data; name="參數的名稱"; filename="上傳的文件名" + "\r\n"sb.append("Content-Disposition: form-data;");sb.append(" name=\"");sb.append(PARAM + "[" + Integer.toString(i) + "]"); //為了上傳多張圖片,使用uploadedfile[index]格式作為圖片參數sb.append("\"") ;sb.append("; filename=\"") ;sb.append(imageInfo.getFileName()) ;sb.append("\"");sb.append("\r\n") ;/*第三行*///Content-Type: 文件的 mime 類型 + "\r\n"sb.append("Content-Type: ");sb.append(imageInfo.getMime()) ;sb.append("\r\n") ;/*第四行*///"\r\n"sb.append("\r\n") ;try {bos.write(sb.toString().getBytes("utf-8"));/*第五行*///文件的二進制數據 + "\r\n"bos.write(imageInfo.getValue());bos.write("\r\n".getBytes("utf-8"));} catch (IOException e) {e.printStackTrace();}}/*結尾行*///`"--" + BOUNDARY + "--" + "\r\n"`String endLine = "--" + BOUNDARY + "--" + "\r\n" ;try {bos.write(endLine.getBytes("utf-8"));} catch (IOException e) {e.printStackTrace();}// Log.v(TAG,"imageInfo =\n"+bos.toString()) ;return bos.toByteArray();}//Content-Type: multipart/form-data; boundary=----------8888888888888@Overridepublic String getBodyContentType() {return MULTIPART_FORM_DATA+"; boundary="+BOUNDARY;}// @Override //注意一旦重寫getBody()方法,則使用此方法添加參數無效。 // protected Map<String, String> getParams() throws AuthFailureError{ // return params; // } }
為了方便調用,封裝Response接口如下:

import com.android.volley.Response;public interface ResponseListener<T> extends Response.ErrorListener,Response.Listener<T> {}
至此,對Volley+OkHttp+Gson的封裝就完成了。在使用時,我們可以在自定義Application中初始化Queue,再封裝一個專門的NetworkManager類來提供所有的網絡訪問操作,比如,在我最近的項目中是這樣用的:


/*** 網絡管理類,封裝網絡操作接口*/ public class NetworkManager {/*** 網絡接口相關常量*/public static final String USER_USERNAME = "user_name";public static final String USER_PASSWORD = "user_password";public static final String USER_EMAIL = "user_email";public static final String USER_ID = "user_id";public static final String USER_WORK = "user_work";public static final String USER_BIRTH = "user_birth";public static final String USER_SIGN = "user_sign";public static final String USER_LOCATION = "user_location";public static final String USER_SEX = "user_sex";public static final String TWEETS_CONTNET = "tweets_content";public static final String FRIEND_ID = "friend_id";public static final String SEND_USERID = "send_userid";public static final String RECEIVE_USERID = "receive_userid";public static final String MESSAGE_CONTENT = "message_content";/*** 服務器接口URL*/public static final String BASE_API_URL = "http://192.168.0.103:8088/youjoin-server/controllers/";public static final String API_SIGN_IN = BASE_API_URL + "signin.php";public static final String API_SIGN_UP = BASE_API_URL + "signup.php";public static final String API_UPDATE_USERINFO = BASE_API_URL + "update_userinfo.php";public static final String API_SEND_TWEET = BASE_API_URL + "send_tweet.php";public static final String API_REQUEST_USERINFO = BASE_API_URL + "request_userinfo.php";public static final String API_ADD_FRIEND = BASE_API_URL + "add_friend.php";public static final String API_SEND_MESSAGE = BASE_API_URL + "send_message.php";public static final String API_RECEIVE_MESSAGE = BASE_API_URL + "receive_message.php";public static final String API_COMMENT_TWEET = BASE_API_URL + "comment_tweet.php";public static final String API_UPVOTE_TWEET = BASE_API_URL + "upvote_tweet.php";private static RequestQueue mRequestQueue ;/*** 發送動態接口* @param listener ResponseListener*/public static void postSendTweet(String content, List<ImageInfo> images,ResponseListener listener){Map<String, String> params = new HashMap<>();params.put(USER_ID, YouJoinApplication.getCurrUser().getId());params.put(TWEETS_CONTNET, content);Request request = new PostUploadRequest(API_SEND_TWEET, images, params,new TypeToken<UpdateUserInfoResult>(){}.getType(), listener);NetworkManager.getRequestQueue().add(request);}/*** 發送私信接口* @param receiveUserId 接收方用戶id* @param content 私信內容* @param listener ResponseListener*/public static void postSendMessage(String receiveUserId, String content,ResponseListener listener){Map<String, String> params = new HashMap<>();params.put(SEND_USERID, YouJoinApplication.getCurrUser().getId());params.put(RECEIVE_USERID, receiveUserId);params.put(MESSAGE_CONTENT, content);Request request = new PostObjectRequest(API_SEND_MESSAGE,params, new TypeToken<ResultInfo>(){}.getType(),listener);NetworkManager.getRequestQueue().add(request);}/*** 添加好友接口* @param friendUserId 要添加的好友id* @param listener ResponseListener*/public static void postAddFriend(String friendUserId,ResponseListener listener){Map<String, String> params = new HashMap<>();params.put(USER_ID, YouJoinApplication.getCurrUser().getId());params.put(FRIEND_ID, friendUserId);Request request = new PostObjectRequest(API_ADD_FRIEND,params, new TypeToken<ResultInfo>(){}.getType(),listener);NetworkManager.getRequestQueue().add(request);}/*** 個人資料請求(下載)接口* @param userId 要獲取的用戶id* @param listener ResponseListener*/public static void postRequestUserInfo(String userId, ResponseListener listener){Map<String, String> params = new HashMap<>();params.put(USER_ID, userId);Request request = new PostObjectRequest(API_REQUEST_USERINFO,params,new TypeToken<UserInfo>(){}.getType(),listener);NetworkManager.getRequestQueue().add(request);}/*** 個人資料更新(上傳)接口* @param userInfo 用戶實體類* @param picPath 頭像的本地路徑* @param listener ResponseListener*/public static void postUpdateUserInfo(UserInfo userInfo, String picPath, ResponseListener listener){if(userInfo.getId() == null) return;List<ImageInfo> imageList = new ArrayList<>();imageList.add(new ImageInfo(picPath));Map<String, String> params = new HashMap<>();params.put(USER_ID, userInfo.getId());params.put(USER_WORK, userInfo.getWork());params.put(USER_LOCATION, userInfo.getLocation());params.put(USER_SEX, userInfo.getSex());params.put(USER_BIRTH, userInfo.getBirth());params.put(USER_SIGN, userInfo.getUsersign());Request request = new PostUploadRequest(API_UPDATE_USERINFO, imageList, params,new TypeToken<UpdateUserInfoResult>(){}.getType(), listener);NetworkManager.getRequestQueue().add(request);}/*** 登陸接口* @param username 登錄用戶名* @param password 登陸密碼* @param listener ResponseListener*/public static void postSignIn(String username, String password,ResponseListener listener){Map<String, String> param = new HashMap<>();param.put(USER_USERNAME, username);param.put(USER_PASSWORD, Md5Utils.getMd5(password));Request request = new PostObjectRequest(API_SIGN_IN,param,new TypeToken<UserInfo>(){}.getType(),listener);NetworkManager.getRequestQueue().add(request);}/*** 注冊接口* @param username 注冊用戶名* @param password 注冊密碼* @param email 注冊郵箱* @param listener ResponseListener*/public static void postSignUp(String username, String password, String email,ResponseListener listener){Map<String, String> param = new HashMap<>();param.put(USER_USERNAME, username);param.put(USER_PASSWORD, Md5Utils.getMd5(password));param.put(USER_EMAIL, email);Request request = new PostObjectRequest(API_SIGN_UP,param,new TypeToken<UserInfo>(){}.getType(),listener);NetworkManager.getRequestQueue().add(request);}/**初始化Volley 使用OkHttpStack* @param context 用作初始化Volley RequestQueue*/public static synchronized void initialize(Context context){if (mRequestQueue == null){synchronized (NetworkManager.class){if (mRequestQueue == null){mRequestQueue =Volley.newRequestQueue(context, new OkHttpStack(new OkHttpClient()));}}}mRequestQueue.start();}/**獲取RequestQueue實例* @return 返回RequestQueue實例*/public static RequestQueue getRequestQueue(){if (mRequestQueue == null)throw new RuntimeException("請先初始化mRequestQueue") ;return mRequestQueue ;} }
import android.app.Application; import android.content.Context;import me.zq.youjoin.model.UserInfo; import me.zq.youjoin.network.NetworkManager;public class YouJoinApplication extends Application {public static float sScale;public static int sHeightPix;private static Context context;private static UserInfo currUser;@Overridepublic void onCreate(){super.onCreate();context = getApplicationContext();NetworkManager.initialize(context);sScale = getResources().getDisplayMetrics().density;sHeightPix = getResources().getDisplayMetrics().heightPixels;}public static Context getAppContext(){return context;}public static UserInfo getCurrUser() {return currUser;}public static void setCurrUser(UserInfo currUser) {YouJoinApplication.currUser = currUser;} }

參考資料:


OkHttpStack.java -- from GitHub
Android Networking I: OkHttp, Volley and Gson
Android Volley完全解析(三),定制自己的Request
Android volley 解析(三)之文件上傳篇
Android OkHttp完全解析 是時候來了解OkHttp了

總結

以上是生活随笔為你收集整理的使用Volley+OkHttp+Gson加速Android网络开发的全部內容,希望文章能夠幫你解決所遇到的問題。

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

日韩动漫免费观看高清完整版在线观看 | 色视频网址 | 国产最新在线视频 | 国产高清不卡一区二区三区 | 中文字幕免费观看视频 | 日韩av女优视频 | 97超碰在线资源 | 波多野结衣精品 | 色天天综合久久久久综合片 | 97在线观看视频免费 | 2022中文字幕在线观看 | 成人黄色国产 | 久草在线免费资源 | 免费的黄色的网站 | 欧美性色综合网 | 久久在线视频在线 | 久久精品国亚洲 | 伊人www22综合色 | 1000部18岁以下禁看视频 | 国产精品久久久久久久久久99 | 日韩av中文在线观看 | 亚洲一二区视频 | 91精品夜夜 | 成人午夜电影免费在线观看 | 久久久久久久久综合 | 91九色蝌蚪国产 | 国模视频一区二区三区 | 最新国产一区二区三区 | 成人中文字幕+乱码+中文字幕 | 中文字幕精品一区久久久久 | 国产精品夜夜夜一区二区三区尤 | 在线小视频国产 | 7777精品伊人久久久大香线蕉 | 99久免费精品视频在线观看 | 色婷婷九月 | 国内精品中文字幕 | 日韩视频在线一区 | 久久久久成人精品免费播放动漫 | 久久视频在线观看免费 | 人人天天夜夜 | 国产原创在线 | www.神马久久 | 国产一区二区高清 | 精品日韩在线一区 | 中文字幕av在线 | 一本一道波多野毛片中文在线 | 天天干人人 | 夜夜操天天干, | 国产精品手机看片 | 色综合久久悠悠 | 超碰在线最新 | 91香蕉视频色版 | 亚洲黄色免费在线看 | 91桃色视频 | 日本三级不卡视频 | 国产一级电影免费观看 | 美女黄濒 | 99精品亚洲 | 中文字幕视频播放 | 中文字幕日韩一区二区三区不卡 | 成年人免费在线播放 | 亚洲精品美女在线观看 | 在线岛国av | 九色激情网 | 五月天精品视频 | 久久久久久久久久久黄色 | 亚洲国产97在线精品一区 | 伊人五月在线 | 天天激情 | 亚洲成人黄色在线 | 国产成人精品久久久 | 91插插插免费视频 | 天天亚洲| 99精品国产一区二区 | 久香蕉 | 亚洲精品免费在线观看 | 午夜10000 | 亚洲爱视频 | 日日干天天操 | 91尤物国产尤物福利在线播放 | 91在线精品一区二区 | 在线91av | 色婷婷国产在线 | 97在线观看免费高清 | 色视频网站在线观看一=区 a视频免费在线观看 | 国产一级黄色片免费看 | 欧美一区二区伦理片 | 人人模人人爽 | 久久伊人免费视频 | www.婷婷com| 国产精品99蜜臀久久不卡二区 | 国产不卡一 | 在线亚洲免费视频 | 日日草天天干 | 国产一区二区成人 | 国产精品一区二区在线 | 999ZYZ玖玖资源站永久 | 99这里精品 | 久久午夜网 | 在线日本看片免费人成视久网 | 欧美日韩一二三四区 | 久久久受www免费人成 | 色天堂在线视频 | 国产在线a免费观看 | 日韩免费播放 | 成人免费视频在线观看 | 国产午夜精品久久久久久久久久 | 丁香综合五月 | 天天操天天添天天吹 | 日韩免费福利 | 久久综合久久综合这里只有精品 | 国产高清av | 99综合视频 | 少妇性色午夜淫片aaaze | 91亚洲精品在线观看 | 精品成人免费 | 国产 中文 日韩 欧美 | 色综合天天| 日日操日日| 国产淫片免费看 | 极品国产91在线网站 | av亚洲产国偷v产偷v自拍小说 | 久久午夜免费视频 | www.69xx| 三级视频国产 | 国产粉嫩在线观看 | 91九色在线 | 国产尤物一区二区三区 | 免费v片| 在线观看亚洲 | 黄色亚洲在线 | 国产91勾搭技师精品 | 免费在线观看午夜视频 | 久久高清免费观看 | 欧美在线1区 | 91亚洲欧美激情 | 天天干天天插 | 美女国内精品自产拍在线播放 | 亚洲综合激情 | 久久久高清一区二区三区 | 日韩在线精品一区 | av在线一级 | 天天干天天操天天入 | 国产精品一区二区三区在线播放 | 国产69久久久 | 美女网站在线免费观看 | 91亚洲精品久久久蜜桃网站 | 91av亚洲| 久久视频在线观看免费 | 久久中文欧美 | 欧美a√大片 | 国产成年人av | 9久久精品 | 91丨九色丨蝌蚪丨对白 | 91精品综合在线观看 | 丁香在线视频 | 一本一本久久a久久精品牛牛影视 | 中日韩三级视频 | 婷婷av网站 | 国产盗摄精品一区二区 | 免费av观看 | 三级av网 | 日本中文字幕视频 | 中文字幕中文字幕 | 97视频在线看 | 亚洲精品国精品久久99热一 | 欧美大片在线观看一区 | 国产精品久久久久一区二区国产 | 国产高清视频在线免费观看 | 丁香电影小说免费视频观看 | 色综合久久88色综合天天人守婷 | 在线观看亚洲专区 | 亚洲dvd | 日韩欧美视频在线播放 | 久久综合亚洲鲁鲁五月久久 | 99爱这里只有精品 | 欧美日韩精品国产 | 久久久久久久久爱 | 波多野结衣在线观看一区二区三区 | 三级黄色三级 | 狠狠久久| 天天草网站| 97超碰人人网 | 黄色国产区| 亚洲日本激情 | 在线蜜桃视频 | 日韩欧美高清一区二区三区 | 中文字幕 国产专区 | 在线观看中文字幕一区 | av夜夜操| 片黄色毛片黄色毛片 | 国产精品亚洲视频 | 欧美另类巨大 | 国产又粗又猛又黄又爽视频 | 四虎国产精品永久在线国在线 | 五月天激情综合网 | 久久精品中文字幕少妇 | 国产精品免费视频观看 | 亚洲精品在线观看免费 | 久草在线视频在线 | 久热av| 亚洲综合欧美激情 | 欧美激情视频在线免费观看 | 中文字幕在线中文 | 天天插天天狠 | 成人在线播放视频 | 91av中文字幕 | 人人草在线观看 | 在线观看亚洲免费视频 | 成人理论在线观看 | 国产免费观看久久黄 | 成人久久电影 | 欧美精品在线观看 | 亚洲精品中文字幕视频 | 亚洲精品综合欧美二区变态 | 久久久久久免费视频 | 国产成人免费网站 | 天天色官网| 日韩精品久久一区二区 | 国产亚洲激情视频在线 | 91.dizhi永久地址最新 | 免费高清在线视频一区· | 欧美精品久久久久久久久久白贞 | 欧美日韩免费观看一区=区三区 | 久久免费精彩视频 | 欧美一级电影 | 国产高清视频色在线www | 五月婷婷丁香 | 又粗又长又大又爽又黄少妇毛片 | 欧美日韩中文国产一区发布 | 九七视频在线观看 | 精品av在线播放 | 国产精品99久久久精品免费观看 | 国内免费久久久久久久久久久 | 精品国产理论 | 女人魂免费观看 | 久久午夜电影 | 久久国产精品免费视频 | 国产视频精品久久 | 日韩中文字幕亚洲一区二区va在线 | 91av国产视频 | 超碰在线人人爱 | 婷婷色网站 | 日韩精品一区二区三区在线视频 | 亚洲午夜久久久久久久久久久 | www99精品| 黄色小网站在线 | 国产一区在线精品 | 亚洲一区美女视频在线观看免费 | 成人av资源网站 | 日韩av黄 | 久久国产精品久久精品国产演员表 | 久久精品国亚洲 | 国产一级在线观看视频 | 欧美在线18 | 精品黄色在线 | 免费视频久久久久 | 精品在线观看免费 | 日韩免费看的电影 | 亚洲春色综合另类校园电影 | 日韩免费在线网站 | 天天激情站 | 成年人免费看片网站 | 成年人视频在线免费观看 | 香蕉网在线播放 | 精品福利片 | 成人资源在线观看 | 国产亚洲精品免费 | 国产精品一码二码三码在线 | 69人人 | 91日韩在线播放 | 99精品国产成人一区二区 | 亚洲极色| 色综合亚洲精品激情狠狠 | 久草网站 | 中文字幕日本电影 | 久久1区| www免费黄色 | 国内揄拍国产精品 | 一区二区三区污 | 国产精品久久一 | 在线免费观看黄色小说 | 亚洲精品一区二区在线观看 | 91视频这里只有精品 | 欧美污污网站 | 日韩高清成人 | 日韩激情第一页 | 综合久久网站 | 91久久爱热色涩涩 | 久久综合免费视频 | 国产精品手机视频 | 亚洲天天综合网 | 91在线看视频 | 91av视频在线播放 | 日韩视频一区二区三区在线播放免费观看 | 精品久久免费 | 激情欧美xxxx | 精品字幕 | 亚洲精品久久久久久久不卡四虎 | 2024国产在线 | 久久免费视频国产 | 日韩精品第一区 | 精品一区二区影视 | 91大神在线观看视频 | 二区视频在线观看 | 国产精品成人自产拍在线观看 | 亚洲一级特黄 | 成人久久18免费网站麻豆 | 国产精品一区二区三区电影 | 亚洲国产播放 | 国产色视频网站2 | 成人欧美一区二区三区在线观看 | 中文久久精品 | 狠狠干夜夜操 | 久久精品一区二区三区视频 | 亚洲一区日韩精品 | 欧美天堂久久 | 免费男女羞羞的视频网站中文字幕 | 免费又黄又爽的视频 | 天天干,狠狠干 | 999亚洲国产996395 | 特级西西444www大胆高清无视频 | 久草资源免费 | 在线观看日本高清mv视频 | 91成人在线免费观看 | 亚洲黄在线观看 | 成人97视频一区二区 | 国产午夜精品理论片在线 | 亚洲精品在线一区二区 | 亚洲日日夜夜 | 欧美大片大全 | 激情婷婷在线观看 | 九九三级毛片 | 在线观看91 | 久久狠狠亚洲综合 | 精油按摩av | 国产伦理一区二区三区 | 在线a视频免费观看 | 国内精品久久久精品电影院 | 在线成人中文字幕 | 天天草天天色 | 天天干天天摸天天操 | 综合久久一本 | 亚洲精品乱码白浆高清久久久久久 | av免费电影网站 | 在线免费黄色毛片 | 国产中文字幕视频在线观看 | 亚洲视频 一区 | 欧美激情综合五月 | 9i看片成人免费看片 | 精品你懂的 | 精品国产一区二区三区四区在线观看 | 92国产精品久久久久首页 | 国产99久久久精品 | 久久久久久久久福利 | 人人插人人做 | 在线天堂8√| 特级毛片在线 | 丁香六月综合网 | 中文在线字幕免费观看 | 成人免费视频网 | 青春草免费视频 | 亚洲精品videossex少妇 | 精品久久久久久久久亚洲 | 免费高清男女打扑克视频 | 精品久久久影院 | 亚洲视屏一区 | 99国产精品视频免费观看一公开 | 国产剧情一区 | 免费看色网站 | 中文字幕在线看视频 | 国产最新精品视频 | 在线观看视频你懂得 | 99久久精品免费视频 | 亚洲成人蜜桃 | 国产特级毛片 | 国产老太婆免费交性大片 | 国内一级片在线观看 | 毛片美女网站 | 一区二区三区日韩视频在线观看 | 精品美女久久久久 | 久久久久久黄色 | 久久黄色片 | 最近中文字幕久久 | 久久久久久黄色 | 成人免费看电影 | 日韩精品欧美专区 | 国产玖玖精品视频 | 久久精品久久国产 | 国产精品成人自产拍在线观看 | 中文字幕一区二 | 国产成人三级三级三级97 | 精品一区二区在线播放 | 三级黄色在线 | 日本不卡一区二区三区在线观看 | 天天操天天草 | 欧美性生交大片免网 | 国产精品日韩久久久久 | 丰满少妇在线观看资源站 | 国产传媒中文字幕 | 精品久久久久久久久久久久久 | 亚洲精品久久久久久国 | 婷婷亚洲激情 | 99 精品 在线| 91九色蝌蚪在线 | 欧美最猛性xxxxx(亚洲精品) | 黄色免费网 | 欧美日韩不卡一区二区三区 | 91看片网址 | www.亚洲视频.com | 91系列在线观看 | 一区二区 不卡 | 在线视频观看亚洲 | 2022中文字幕在线观看 | 综合精品久久久 | 久久,天天综合 | 国产成人久久av免费高清密臂 | 97人人精品 | 精品福利在线视频 | 久久有精品| 亚洲性xxxx| 天堂av在线免费 | 午夜精品一二区 | 91成人在线网站 | 午夜黄网 | 久久久久久中文字幕 | 日韩大片在线观看 | 免费国产在线观看 | 欧美精品久久久久久久亚洲调教 | 精品一区二区三区电影 | 日韩成人在线一区二区 | 国产精品免费在线播放 | 欧美一区在线观看视频 | av在观看| 国产一区二区在线影院 | 国产四虎影院 | 亚洲精品视频一二三 | 啪啪免费视频网站 | 91夫妻自拍 | 日韩精品一区在线观看 | 婷婷综合网 | 天天干天天干天天 | 久久看视频| www.av在线.com | 午夜免费在线观看 | 久久综合九色综合欧美就去吻 | 久久精品一区二区三区中文字幕 | 亚洲最新毛片 | jizz欧美性9| 国产精品嫩草在线 | 久久免费精品国产 | 国产视频一区二区在线观看 | 亚洲精品男人的天堂 | 久久精品永久免费 | 亚洲国产资源 | va视频在线| 天天爱天天操天天干 | 啪啪av在线 | 天天色天天操天天爽 | 久久在线精品 | 天天干,狠狠干 | 国产精品成人免费精品自在线观看 | 粉嫩av一区二区三区免费 | 69视频网站| 视频精品一区二区三区 | 亚洲人成人天堂h久久 | 亚洲国产日韩一区 | 欧美日韩精品在线视频 | 欧美在线视频日韩 | 天天爱天天操天天射 | 综合久久久久 | 97视频免费观看2区 亚洲视屏 | 久久国产精品色婷婷 | 久久国产精品精品国产色婷婷 | 精品日韩在线 | 国产小视频你懂的在线 | 91看片淫黄大片在线播放 | 久久久麻豆 | 国产又粗又猛又色又黄网站 | 狠狠色狠狠色终合网 | 欧美视频一区二 | 国产精品第一页在线 | 91成人在线视频 | 麻豆成人在线观看 | 五月综合激情网 | 久久久久免费 | 亚洲1区在线 | 亚洲一区 av| 亚洲第一中文网 | 国产不卡一二三区 | 亚洲综合激情小说 | 天天干,天天插 | www.xxxx变态.com | 日韩精品你懂的 | 免费黄色网止 | 亚洲精品小视频 | 人人澡人人草 | 色无五月 | 亚洲一区二区三区在线看 | 亚洲黑丝少妇 | 日韩精品一区电影 | 亚洲91精品在线观看 | 亚洲精品国产高清 | 天天操比 | 日韩av中文 | 国产精品成人免费一区久久羞羞 | 天天操天天干天天爽 | 66av99精品福利视频在线 | av一级片| 日韩在线观看一区二区三区 | 国产日韩精品一区二区三区 | 天天拍天天色 | 特级西西444www大胆高清无视频 | 国产三级精品三级在线观看 | 国产自制av | 天天干,天天草 | 欧美一级电影免费观看 | 久久精品99久久久久久2456 | 欧美精品乱码99久久影院 | 992tv在线观看网站 | 天天综合久久 | 永久免费在线 | 欧美另类成人 | 久久精品成人欧美大片古装 | 成 人 黄 色 免费播放 | 精品国产免费观看 | 亚洲a在线观看 | 亚洲高清在线观看视频 | 国产精品一区二区在线免费观看 | 亚洲在线免费视频 | 亚洲精品玖玖玖av在线看 | 成全在线视频免费观看 | 伊人日日干 | 国产成年免费视频 | 久久免费视频在线观看6 | 91免费的视频在线播放 | 久久精品成人欧美大片古装 | 久久精品最新 | 天天做日日做天天爽视频免费 | 国产成人不卡 | 激情综合五月婷婷 | 7777精品伊人久久久大香线蕉 | 成人av在线影视 | 在线观看视频你懂 | 国产一区二区精品久久91 | 伊人影院av | 精品国产成人 | 色久综合| 五月天九九 | 日本久久高清视频 | 在线观看免费av网站 | 国产一级电影免费观看 | 久久这里只有精品23 | 精品国产理论 | 很黄很污的视频网站 | 欧洲视频一区 | 中文字幕日韩伦理 | 成人av电影免费 | 最新中文字幕在线播放 | 成人小电影在线看 | 欧美精品久久久久久久久老牛影院 | 在线观看日本高清mv视频 | 狠狠的操你| 欧美美女视频在线观看 | 日韩精品字幕 | 成人黄色电影视频 | 久久乐九色婷婷综合色狠狠182 | 午夜精品一区二区三区在线播放 | 国产在线999| 亚洲精品88欧美一区二区 | 97精品欧美91久久久久久 | 欧美精品乱码久久久久久按摩 | 日本午夜在线亚洲.国产 | 亚洲精品动漫久久久久 | 亚洲一区av| 国产高清黄色 | 国产视频一区二区三区在线 | 欧美性生交大片免网 | 国产精品色视频 | 欧美日韩性视频在线 | 久产久精国产品 | 亚洲毛片在线观看. | 人人干狠狠操 | www..com毛片| 亚洲天堂网视频 | 国产五月 | 国产又粗又硬又长又爽的视频 | 日日干天天 | 综合天天色 | 激情综合网五月激情 | 狠狠色丁香婷婷综合橹88 | 天天干,天天插 | 91亚色在线观看 | 色视频网站在线观看一=区 a视频免费在线观看 | 中文字幕 国产视频 | 97免费在线观看视频 | 久久久天天操 | 国产精品免费av | 麻豆传媒视频在线 | 最近中文字幕免费观看 | 国产成人三级三级三级97 | 人人干97 | 欧美色888 | 91尤物在线播放 | 日韩动漫免费观看高清完整版在线观看 | 99热99re6国产在线播放 | 天天干天天天 | av一区二区在线观看中文字幕 | 亚洲精品视频在线看 | 高清在线观看av | 国产精品欧美久久久久久 | 久久黄色精品视频 | 国产精品黄色 | 久久精品99国产精品亚洲最刺激 | 成人在线视频免费观看 | 亚洲精品综合久久 | 在线观看免费版高清版 | 九九色网 | 青春草国产视频 | 天堂av影院 | 精品一区二区日韩 | 国产高清免费视频 | 国产激情免费 | 1024久久| 欧美日韩国产一区二区三区 | 在线高清一区 | 成人黄色影片在线 | 成人欧美一区二区三区在线观看 | 国产精品私拍 | 久久这里 | 色小说av| 丁香婷婷在线 | 国产成人一区二区三区在线观看 | 精品欧美乱码久久久久久 | 96av视频 | 欧美在线视频精品 | 亚洲欧美少妇 | 超碰97在线看 | 五月开心激情 | 国产片免费在线观看视频 | av在线激情| 欧美精品免费在线 | 九九九电影免费看 | 黄色亚洲 | 国产无区一区二区三麻豆 | 国产高清视频免费最新在线 | 97碰在线| 久久久91精品国产一区二区三区 | 国产专区在线播放 | 亚洲欧美成人综合 | 久久成人综合视频 | 国产亚洲精品久久久久久久久久 | 国内丰满少妇猛烈精品播 | 国产精品久久久久国产精品日日 | 亚洲人成影院在线 | 国产91勾搭技师精品 | 国产在线观看高清视频 | 综合国产在线 | 91精品国产自产在线观看 | 精品国产理论 | 国产又粗又猛又黄又爽视频 | 色婷婷啪啪免费在线电影观看 | 蜜臀久久99精品久久久无需会员 | 中文字幕在线看视频国产中文版 | 超碰国产在线播放 | 97综合在线 | 亚洲色图av | 特级毛片网 | 婷婷六月天丁香 | 色com| 91精品国产综合久久福利不卡 | 美女黄色网在线播放 | 精品色综合 | 免费看在线看www777 | 久久最新 | 天天干天天草天天爽 | 激情视频一区二区 | av黄在线播放 | 精品国产伦一区二区三区 | 99色人| 色丁香婷婷 | 国产一区免费视频 | 国产在线欧美日韩 | 高清av在线| 97成人超碰 | 九九视频免费观看视频精品 | 狠狠色丁香婷婷综合 | 男女全黄一级一级高潮免费看 | 激情av在线播放 | 国产精品久久久久久吹潮天美传媒 | 国产区欧美 | 中文字幕色婷婷在线视频 | 成人精品一区二区三区中文字幕 | 亚洲黄污 | 国产精品一区欧美 | 国产日韩在线播放 | va视频在线| 欧美一区视频 | 日韩精品久久久久久久电影竹菊 | 国产成人精品一区二区三区 | 果冻av在线 | 麻豆视频免费入口 | 亚洲成a人片在线观看网站口工 | 麻豆国产精品永久免费视频 | 97av影院 | 深爱激情婷婷网 | 国产成人精品av久久 | 黄色视屏av| 国产精品久久久久高潮 | 美女搞黄国产视频网站 | 国产一区福利 | 国产 欧美 日产久久 | 久草在线视频精品 | 日韩丝袜在线观看 | 丁香婷婷在线 | 成人免费视频网站在线观看 | 99re热精品视频 | 2021国产精品 | 久久在线播放 | 日本视频网| 欧美精品久久久久久久久久 | 天天·日日日干 | av在线成人| 国产精品久久久久久久久免费看 | 久久久久亚洲天堂 | 久久视频这里只有精品 | 欧美日韩精品在线 | 国产亚洲欧美一区 | 久久久伦理| 在线观看激情av | 亚洲精品国偷拍自产在线观看蜜桃 | 99在线看| 97超碰.com | 日韩免费电影在线观看 | 天天曰天天射 | 免费在线国产 | 五月激情久久久 | 欧美日韩中文字幕综合视频 | 国产精品免费视频网站 | 国产美女网站在线观看 | 久久在线观看视频 | 久久图 | 激情开心色 | 97超碰在线人人 | 午夜美女福利 | 成人h动漫精品一区二 | 国产xxxx| 久久精品99国产 | 中文字幕在线观看第三页 | 欧美另类交人妖 | 91麻豆精品国产91久久久久久久久 | 久久久国产精品视频 | 午夜视频亚洲 | 激情五月婷婷综合网 | 99久久精品久久久久久动态片 | 碰超在线| 成年人免费av | 97碰在线 | a亚洲视频| 欧美日韩在线观看不卡 | 国产色就色 | 亚洲夜夜爽| 天天操天天草 | 99精品国产福利在线观看免费 | 麻豆精品传媒视频 | 成人av资源 | www久久久 | 91成品人影院 | 久久开心激情 | 国产不卡片 | 午夜久久网站 | 国产精品18久久久久久久 | 欧美国产日韩一区二区 | 中文字幕在线播出 | 高清av网 | 超碰在线公开免费 | 欧美成人精品欧美一级乱 | 美女性爽视频国产免费app | 欧美日韩高清在线观看 | 免费看一级黄色 | 中文字幕中文字幕中文字幕 | 国产亚洲一区二区在线观看 | 精品国产一区二区三区久久 | 色综合 久久精品 | 伊人五月天综合 | 日韩av一区二区三区四区 | 久久久国产成人 | 久久9999久久| 精品久久一区二区三区 | 国产日韩精品一区二区三区 | 成人网看片 | 黄色电影网站在线观看 | 成人毛片在线观看 | 又爽又黄又刺激的视频 | 久久久久久国产精品美女 | 国产老熟| 国产中文字幕视频在线观看 | 91在线精品播放 | 婷婷在线精品视频 | 日韩视频一区二区三区在线播放免费观看 | 中文日韩在线 | 中文字幕在线日本 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 久久国产精品免费视频 | 福利视频网站 | 久久er99热精品一区二区 | 五月黄色 | 久久永久视频 | 国产精品男女啪啪 | 最近中文字幕在线中文高清版 | 久久久免费精品国产一区二区 | 国产日韩中文字幕 | 69夜色精品国产69乱 | 92国产精品久久久久首页 | av看片网址| 精品黄色在线 | 亚洲黄色片一级 | 亚洲国产精品电影 | 天天狠狠 | 国产一区二区精 | www夜夜操 | 久久精品视频5 | 日韩精品播放 | 五月激情久久久 | 久久综合九色综合欧美就去吻 | 国产精品 999| 国产麻豆精品95视频 | 91激情在线视频 | 国产精品久久久久久久久婷婷 | 欧美一二三区在线观看 | 日韩精品中文字幕久久臀 | 日韩精品免费一区二区在线观看 | 欧美日韩视频在线播放 | 久久线视频 | 黄色福利视频网站 | 99热国产在线 | 国产一区二区三区 在线 | 狠狠的操狠狠的干 | 免费人成网 | 国产 日韩 中文字幕 | 91精品国产网站 | 天天干天天做天天爱 | 久久av影院| 中文欧美字幕免费 | 在线免费av电影 | 亚洲综合在线五月 | 成人欧美一区二区三区黑人麻豆 | 超碰久热 | 国产精品第三页 | 精品av网站 | 久久99九九99精品 | 九色精品在线 | 91精品欧美 | 国产18精品乱码免费看 | 四虎影视精品成人 | 久久久久国产a免费观看rela | 久草a视频 | 国产福利一区二区在线 | 国产精品欧美日韩 | www久久99 | 99久久久成人国产精品 | 91精品国产自产在线观看永久 | 成人国产精品久久久 | 日韩欧美精品在线观看 | 在线视频区 | 99精品国产99久久久久久97 | 九九九九九九精品任你躁 | 成人97视频一区二区 | 玖玖玖在线 | 贫乳av女优大全 | 国产精品第一页在线观看 | 国产精品9999久久久久仙踪林 | 国产精品久久久久永久免费看 | 亚洲aⅴ在线观看 | 欧美日韩在线观看视频 | 国产黄免费在线观看 | 偷拍精偷拍精品欧洲亚洲网站 | 免费在线观看不卡av | 久久精品久久久久 | 天天摸天天舔 | 色七七亚洲影院 | 九色福利视频 | 九九久久精品视频 | 91麻豆产精品久久久久久 | 视频二区在线 | 亚州性色| 午夜久草| 在线观看视频你懂的 | 久久精品免费电影 | 免费在线观看日韩欧美 | 久99久中文字幕在线 | 国产精品黄色 | www久| 亚洲综合小说电影qvod | av在线在线 | 久久精品123| 中文字幕日本在线 | 狠狠干成人综合网 | 日韩在线观看一区 | 日韩一区二区三区高清免费看看 | 99视屏| 日韩av一区二区三区四区 | 欧美精品三级在线观看 | 欧美最猛性xxxx | 五月花激情 | 成人国产一区 | 最近中文字幕免费视频 | 中文字幕亚洲精品日韩 | 日韩高清激情 | 91看国产 | 中文字幕资源网 国产 | 国产精品视屏 | 久久久五月婷婷 | 五月婷婷操 | 色天天天 | 开心激情网五月天 | 三级av网| 一区二区三区四区不卡 | 中文字幕 国产专区 | 久久婷婷国产 | 顶级bbw搡bbbb搡bbbb | 91香蕉视频色版 | 香蕉在线影院 | 成片免费观看视频大全 | 国外av在线 | 日韩免费在线视频 | 日本久久电影 | 2021国产精品 | av在线影视 | 精品999| 欧美一级视频免费 | 一区二区三区在线不卡 | 91黄色在线视频 | 欧美日韩三级在线观看 | av免费在线观看网站 | 热久久最新地址 | 中文字幕精品一区 | 中文字幕精品三区 | 亚洲天堂网站 | 亚洲码国产日韩欧美高潮在线播放 | 国产精品久久久区三区天天噜 | 欧美aaa级片| www.午夜| av色图天堂网 | 国产一卡二卡在线 | 天堂入口网站 | 天天干天天操天天拍 | 国产精品99久久免费观看 | 色婷婷激情综合 | 精品久久久成人 | 美女免费电影 | 麻豆超碰 | 日韩羞羞 | 日韩av中文字幕在线免费观看 | 久久精品一区二区三区视频 | 在线观看黄色免费视频 | www.av免费观看 | 久久深夜福利免费观看 | 亚洲美女在线国产 | 中文字幕av最新 | av大片免费 | 欧美 日韩 成人 | 精品国产一区二区三区免费 | 91色偷偷 | 成人一级 | 久久大香线蕉app | 国产精品va在线观看入 | 97av在线| 久久久久国产成人免费精品免费 | 欧美aaa级片 | 99草视频在线观看 | 一二三四精品 | 九九九在线观看视频 | 日韩精品视频在线免费观看 | 免费看久久久 | 天天干天天上 | 国产成人a v电影 | 日日夜夜天天人人 | 国内久久视频 | 国产成人高清在线 | 九九综合九九 | 午夜狠狠操 | 国产手机在线精品 | 国产丝袜一区二区三区 | 又黄又爽又湿又无遮挡的在线视频 | 久久人网| 一级黄网 | 久久99在线 | 韩日电影在线 | 欧美一区二区在线免费看 | 久久国产亚洲视频 | 国产精品一区二区无线 | 久久公开免费视频 | 亚洲精品三级 | 国产综合小视频 | av电影免费看 | 国产精品伦一区二区三区视频 | 色综合中文字幕 |