精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

iOS的ASIHTTPRequest學習

移動開發 iOS
ASIHTTPRequest是一款極其強勁的HTTP訪問開源項目。讓簡單的API完成復雜的功能,如:異步請求,隊列請求,GZIP壓縮,緩存,斷點續傳,進度跟蹤,上傳文件,HTTP認證在新的版本中,還加入了Objective-C閉包Block的支持,讓我們的代碼更加輕簡靈活。

ASIHTTPRequest是一款極其強勁的HTTP訪問開源項目。讓簡單的API完成復雜的功能,

如:
異步請求,隊列請求,GZIP壓縮,緩存,斷點續傳,進度跟蹤,上傳文件,HTTP認證
在新的版本中,還加入了Objective-C閉包Block的支持,讓我們的代碼更加輕簡靈活。

下面就舉例說明它的API用法。

發起一個同步請求

同步意為著線程阻塞,在主線程中使用此方法會使應用Hang住而不響應任何用戶事件。所以,在應用程序設計時,大多被用在專門的子線程增加用戶體驗,或用異步請求代替(下面會講到)。

  1. - (IBAction)grabURL:(id)sender 
  2.   NSURL *url = [NSURL URLWithString:@" http://allseeing-i.com"]; 
  3.    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  4.   [request startSynchronous]; 
  5.   NSError *error = [request error]; 
  6.   if (!error) { 
  7.      NSString *response = [request responseString]; 
  8.   } 

a, 用requestWithURL快捷方法獲取ASIHTTPRequest的一個實例
b, startSynchronous 方法啟動同步訪問,
c, 由于是同步請求,沒有基于事件的回調方法,所以從request的error屬性獲取錯誤信息。
d, responseString,為請求的返回NSString信息。

創建一個異步請求

異步請求的好處是不阻塞當前線程,但相對于同步請求略為復雜,至少要添加兩個回調方法來獲取異步事件。
下面異步請求代碼完成上面同樣的一件事情:

  1. - (IBAction)grabURLInBackground:(id)sender 
  2.    NSURL *url = [NSURL URLWithString:@" http://allseeing-i.com"]; 
  3.     ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  4.    [request setDelegate:self]; 
  5.    [request startAsynchronous]; 
  6.   
  7. - (void) requestFinished:(ASIHTTPRequest *)request 
  8.    // Use when fetching text data 
  9.    NSString *responseString = [request responseString]; 
  10.   
  11.    // Use when fetching binary data 
  12.    NSData *responseData = [request responseData]; 
  13.   
  14. - (void)requestFailed:(ASIHTTPRequest *)request 
  15.    NSError *error = [request error]; 

a,與上面不同的地方是指定了一個 "delegate",并用startAsynchronous來啟動網絡請求。
b,在這里實現了兩個delegate的方法,當數據請求成功時會調用requestFinished,請求失敗時(如網絡問題或服務器內部錯誤)會調用requestFailed。

隊列請求

提供了一個對異步請求更加精準豐富的控制。
如,可以設置在隊列中,同步請求的連接數。往隊列里添加的請求實例數大于maxConcurrentOperationCount時,請求實例將被置為等待,直到前面至少有一個請求完成并出列才被放到隊列里執行。
也適用于當我們有多個請求需求按順序執行的時候(可能是業務上的需要,也可能是軟件上的調優),僅僅需要把maxConcurrentOperationCount設為“1”。

  1. - (IBAction)grabURLInTheBackground:(id)sender 
  2.    if (![self queue]) { 
  3.       [self setQueue:[[[NSOperationQueue alloc] init] autorelease]]; 
  4.    } 
  5.   
  6.    NSURL *url = [NSURL URLWithString:@" http://allseeing-i.com"]; 
  7.    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  8.    [request setDelegate:self]; 
  9.    [request setDidFinishSelector:@selector(requestDone:)]; 
  10.    [request setDidFailSelector:@selector(requestWentWrong:)]; 
  11.    [ [self queue] addOperation:request]; //queue is an NSOperationQueue 
  12.   
  13. - (void)requestDone:(ASIHTTPRequest *)request 
  14.    NSString *response = [request responseString]; 
  15.   
  16. - (void)requestWentWrong:(ASIHTTPRequest *)request 
  17.    NSError *error = [request error]; 

創建NSOperationQueue,這個Cocoa架構的執行任務(NSOperation)的任務隊列。我們通過 ASIHTTPRequest.h的源碼可以看到,此類本身就是一個NSOperation的子類。也就是說它可以直接被放到"任務隊列"中,并被執行。 上面的代碼隊了隊列的創建與添加操作外,其它代碼與上一例一樣。

請求隊列上下文

a,可以設置一個上下文(userInfo)到request對象中,當請求響應完后可以通過訪問request對象的userInfo獲取里面的信息
b,為每一個請求實例設置不同的setDidFinishSelector / setDidFailSelector的回調方法
c,子類化ASIHTTPRequest,重寫requestFinished: 與 failWithProblem:方法

ASINetworkQueues, 它的delegate提供更為豐富的功能

提供的更多的回調方法如下:
a,requestDidStartSelector,請求發起時會調此方法,你可以在此方法中跟據業務選擇性的設置request對象的deleaget。
b,requestDidReceiveResponseHeadersSelector,當接受完響應的Header后設計此方法,這個對下載大數據的時候相當有用,你可以在方法里做更多業務上的處理。
c,requestDidFinishSelector,請求并響應成功完成時調用此方法
d,requestDidFailSelector,請求失敗
e,queueDidFinishSelector,整個隊列里的所有請求都結束時調用此方法。

  它是NSOperationQueues的擴展,小而強大。但也與它的父類略有區別。如,僅添加到隊列中其實并不能執行請求,只有調用[ queue g o]才會執行;一個正在運行中的隊列,并不需要重復調用[ queue go ]。

默認情況下,隊列中的一個請求如果失敗,它會取消所有未完成的請求。可以設置[ queue setShouldCancelAllRequestsOnFailure:NO ]來修 正。

#p#
取消異步請求

首先,同步請求是不能取消的。
其次,不管是隊列請求,還是簡單的異步請求,全部調用[ request cancel ]來取消請求。

  取消的請求默認都會按請求失敗處理,并調用請求失敗delegate。
如果不想調用delegate方法,則設置:[ request clearDelegatesAndCancel];

隊列請求中需要注意的是,如果你取消了一個請求,隊列會自動取消其它所有請求。
如果只想取消一個請求,可以設置隊列:[ queue setShouldCancelAllRequestsOnFailure:NO ];
如果想明確取消所有請求:[ queue cancelAllOperations ];

安全的內存回收建議

request并沒有retain你的delegate,所以在沒有請求完的時候釋放了此delegate,需要在dealloc方法里先取消所有請求,再釋放請求實例,如:

  1. - (void)dealloc 
  2.    [request clearDelegatesAndCancel]; 
  3.    [request release]; 
  4.    ... 
  5.    [super dealloc]; 
向服務器端上傳數據

ASIFormDataRequest ,模擬 Form表單提交,其提交格式與 Header會自動識別。
沒有文件:application/x-www-form-urlencoded
有文件:multipart/form-data

  1. ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
  2. [request setPostValue:@"Ben" forKey:@"first_name"]; 
  3. [request setPostValue:@"Copsey" forKey:@"last_name"]; 
  4. [request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"]; 
  5. [request addData:imageData withFileName:@"george.jpg" andContentType:@"image/jpeg"forKey:@"photos"]; 

如果要發送自定義數據:

  1. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  2. [request appendPostData:[@"This is my data" dataUsingEncoding:NSUTF8StringEncoding]]; 
  3. // Default becomes POST when you use appendPostData: / appendPostDataFromFile: / setPostBody: 
  4. [request setRequestMethod:@"PUT"]; 
  5.  
  6. //用戶自定義數據   字典類型  (可選) 
  7. request.userInfo = [NSDictionary dictionaryWithObject:method forKey:@"Method"]; 
  8.  
  9. //post的數據 
  10. [request appendPostData:[body dataUsingEncoding:NSUTF8StringEncoding]];
下載文件

通過設置request的setDownloadDestinationPath,可以設置下載文件用的下載目標目錄。
首先,下載過程文件會保存在temporaryFileDownloadPath目錄下。如果下載完成會做以下事情:
1,如果數據是壓縮的,進行解壓,并把文件放在downloadDestinationPath目錄中,臨時文件被刪除
2,如果下載失敗,臨時文件被直接移到downloadDestinationPath目錄,并替換同名文件。

如果你想獲取下載中的所有數據,可以實現delegate中的request:didReceiveData:方法。但如果你實現了這個方法,request在下載完后,request并不把文件放在downloadDestinationPath中,需要手工處理。

獲取響應信息

信息:status , header, responseEncoding

  1. [request responseStatusCode]; 
  2. [[request responseHeaders] objectForKey:@"X-Powered-By"]; 
  3.  [request responseEncoding]; 
獲取請求進度

有兩個回調方法可以獲取請求進度,
1,downloadProgressDelegate,可以獲取下載進度
2,uploadProgressDelegate,可以獲取上傳進度

cookie的支持

如果Cookie存在的話,會把這些信息放在NSHTTPCookieStorage容器中共享,并供下次使用。
你可以用[ ASIHTTPRequest setSessionCookies:nil ] ; 清空所有Cookies。
當然,你也可以取消默認的Cookie策略,而使自定義的Cookie:

  1. //Create a cookie 
  2. NSDictionary *properties = [[[NSMutableDictionary alloc] init] autorelease]; 
  3. [properties setValue:[@"Test Value" encodedCookieValue] forKey:NSHTTPCookieValue]; 
  4. [properties setValue:@"ASIHTTPRequestTestCookie" forKey:NSHTTPCookieName]; 
  5. [properties setValue:@".allseeing-i.com" forKey:NSHTTPCookieDomain]; 
  6. [properties setValue:[NSDate dateWithTimeIntervalSinceNow:60*60] forKey:NSHTTPCookieExpires]; 
  7. [properties setValue:@"/asi-http-request/tests" forKey:NSHTTPCookiePath]; 
  8. NSHTTPCookie *cookie = [[[NSHTTPCookie alloc] initWithProperties:properties] autorelease]; 
  9.   
  10. //This url will return the value of the 'ASIHTTPRequestTestCookie' cookie 
  11. url = [NSURL URLWithString:@" http://allseeing-i.com/ASIHTTPRequest/tests/read_cookie"]; 
  12. request = [ASIHTTPRequest requestWithURL:url]; 
  13. [request setUseCookiePersistence:NO]; 
  14. [request setRequestCookies:[NSMutableArray arrayWithObject:cookie]]; 
  15. [request startSynchronous]; 
  16.   
  17. //Should be: I have 'Test Value' as the value of 'ASIHTTPRequestTestCookie' 
  18. NSLog(@"%@",[request responseString]); 
#p#
大文件斷點續傳

0.94以后支持大文件的斷點下載,只需要設置:

  1. [ request setAllowResumeForFileDownloads:YES ]; 
  2. [ request setDownloadDestinationPath:downloadPath ]; 

就可以了。

ASIHTTPRequest會自動保存訪問過的URL信息,并備之后用。在以下幾個場景非常有用:
1,當沒有網絡連接的時候。
2,已下載的數據再次請求時,僅當它與本地版本不樣時才進行下載。

ASIDownloadCache 設置下載緩存

它對Get請求的響應數據進行緩存(被緩存的數據必需是成功的200請求):

  1. [ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]];  

當設置緩存策略后,所有的請求都被自動的緩存起來。
另外,如果僅僅希望某次請求使用緩存操作,也可以這樣使用:

  1. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  2. [request setDownloadCache:[ASIDownloadCache sharedCache]]; 
多種的緩存并存

僅僅需要創建不同的ASIDownloadCache,并設置緩存所使用的路徑,并設置到需要使用的request實例中:

  1. ASIDownloadCache *cache = [[[ASIDownloadCache alloc] init] autorelease]; 
  2. [cache setStoragePath:@"/Users/ben/Documents/Cached-Downloads"]; 
  3. [self setMyCache:cache]; 
  4. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  5. [request setDownloadCache:[self myCache]]; 
緩存策略

緩存策略是我們控制緩存行為的主要方式,如:什么時候進行緩存,緩存數據的利用方式。
以下是策略可選列表(可組合使用):

ASIUseDefaultCachePolicy

這是一個默認的緩存策略“ASIAskServerIfModifiedWhenStaleCachePolicy”,這個很明白,見名知意(它不能與其它策略組合使用)

ASIDoNotReadFromCacheCachePolicy

所讀數據不使用緩存

ASIDoNotWriteToCacheCachePolicy

不對緩存數據進行寫操作

ASIAskServerIfModifiedWhenStaleCachePolicy

默認緩存行為,request會先判斷是否存在緩存數據。a, 如果沒有再進行網絡請求。 b,如果存在緩存數據,并且數據沒有過期,則使用緩存。c,如果存在緩存數據,但已經過期,request會先進行網絡請求,判斷服務器版本與本地版本是 否一樣,如果一樣,則使用緩存。如果服務器有新版本,會進行網絡請求,并更新本地緩存。

ASIAskServerIfModifiedCachePolicy

與默認緩存大致一樣,區別僅是每次請求都會 去服務器判斷是否有更新

ASIOnlyLoadIfNotCachedCachePolicy

如果有緩存在本地,不管其過期與否,總會拿來使用

ASIDontLoadCachePolicy

僅當有緩存的時候才會被正確執行,如果沒有緩存,request將被取消(沒有錯誤信息)

ASIFallbackToCacheIfLoadFailsCachePolicy

這個選項經常被用來與其它選項組合使用。請求失敗時,如果有緩存當網絡則返回本地緩存信息(這個在處理異常時非常有用)

如果設置了“defaultCachePolicy”則所有的請求都會使用此緩存。

緩存存儲方式

你可以設置緩存的數據需要保存多長時間,ASIHTTPRequest提供了兩種策略:
a,ASICacheForSessionDurationCacheStoragePolicy,默認策略,基于session的緩存數據存儲。當下次運行或[ASIHTTPRequest clearSession]時,緩存將失效。
b,ASICachePermanentlyCacheStoragePolicy,把緩存數據***保存在本地,
如:

  1. ASIHTTPRequest *request = [ ASIHTTPRequest requestWithURL:url ]; 
  2. [ request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy ]; 

另外,也可以使用clearCachedResponsesForStoragePolicy來清空指定策略下的緩存數據。

緩存其它特性

設置是否按服務器在Header里指定的是否可被緩存或過期策略進行緩存:

  1. [[ ASIDownloadCache sharedCache ] setShouldRespectCacheControlHeaders:NO ]; 

設置request緩存的有效時間:

  1. [ request setSecondsToCache:60*60*24*30 ]; // 緩存30天  

可以判斷數據是否從緩存讀取:

  1. [ request didUseCachedResponse ]; 

設置緩存所使用的路徑:

  1. [ request setDownloadDestinationPath:[[ ASIDownloadCache sharedCache ] pathToStoreCachedResponseDataForRequest:request ]];  
實現自定義的緩存

只要簡單的實現ASICacheDelegate接口就可以被用來使用。

使用代理請求

默認的情況下,ASIHTTPRequest會使用被設置的默認代理。但你也可以手動修改http代理:

  1. // Configure a proxy server manually 
  2. NSURL *url = [ NSURL URLWithString:@" http://allseeing-i.com/ignore" ]; 
  3. ASIHTTPRequest *request = [ ASIHTTPRequest requestWithURL:url ]; 
  4. [ request setProxyHost:@"192.168.0.1" ]; 
  5. [ request setProxyPort:3128 ]; 
  6.   
  7. // Alternatively, you can use a manually-specified Proxy Auto Config file (PAC) 
  8. // (It's probably best if you use a local file) 
  9. [request setPACurl:[NSURL URLWithString:@"file:///Users/ben/Desktop/test.pac"]]; 
ASIHTTPRequest, 請求的其它特性

iOS4中,當應用后臺運行時仍然請求數據:

  1. [ request setShouldContinueWhenAppEntersBackground:YES ];  

是否有網絡請求:

  1. [ ASIHTTPRequest isNetworkInUse ]  

是否顯示網絡請求信息在status bar上:

  1. [ ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:NO ]; 

設置請求超時時,設置重試的次數:

  1. [ request setNumberOfTimesToRetryOnTimeout:2 ];  

KeepAlive的支持:

  1. // Set the amount of time to hang on to a persistent connection before it should expire to 2 minutes 
  2. [ request setPersistentConnectionTimeoutSeconds:120 ]; 
  3.   
  4. // Disable persistent connections entirely 
  5. [ request setShouldAttemptPersistentConnection:NO ]; 

 

責任編輯:閆佳明 來源: oschina
相關推薦

2013-07-22 14:43:57

iOS開發ASIHTTPRequ

2013-07-22 14:38:00

iOS開發ASIHTTPRequ

2013-07-21 18:22:59

iOS開發ASIHTTPRequ

2013-07-21 18:18:00

iOS開發ASIHttpRequ

2013-07-21 18:27:15

iOS開發ASIHTTPRequ

2013-07-22 13:48:55

iOS開發ASIHTTPRequ使用Cookie

2013-07-22 13:54:32

iOS開發ASIHTTPRequ

2013-07-22 14:33:15

iOS開發ASIHTTPRequ

2013-07-22 14:15:17

iOS開發ASIHTTPRequ

2013-07-21 18:32:13

iOS開發ASIHTTPRequ

2013-07-22 14:25:29

iOS開發ASIHTTPRequ

2013-07-21 18:09:21

iOS開發ASIHttpRequ創建和執行reques

2013-07-22 14:02:17

iOS開發ASIHTTPRequ

2013-07-22 14:29:35

iOS開發ASIHTTPRequ

2013-07-21 18:04:22

ASIHttpRequiOS開發

2011-08-22 10:06:38

IOS開發ASIHTTPRequHTTP 請求

2013-07-22 14:10:26

iOS開發ASIHTTPRequ

2013-07-22 14:47:56

iOS開發iOS5中ASIHtt

2011-08-10 17:37:00

iPhoneASIHTTPRequ

2011-08-12 13:35:23

iPhone文件流ASIHTTPRequ
點贊
收藏

51CTO技術棧公眾號

国产精品一品二品| 国产日产在线观看| 九九热在线免费观看| 精品久久福利| 91网页版在线| 欧美国产第二页| 亚洲v国产v| 日本熟妇毛茸茸丰满| 日日夜夜精品| 国产女同性恋一区二区| 欧洲午夜精品久久久| 中文写幕一区二区三区免费观成熟| 九色在线视频蝌蚪| 欧美18免费视频| 一区二区三区毛片| 91免费看片在线| www成人啪啪18软件| 亚洲欧美se| 成人黄色国产精品网站大全在线免费观看| 日韩视频精品在线| 久热精品在线播放| av电影在线观看| 秋霞电影网一区二区| 日韩黄在线观看| 777av视频| 欧美一区二不卡视频| 欧美三级小说| 日韩精品一区二区三区四区 | 亚洲欧美自拍偷拍| 日韩女优在线播放| 人人爽人人爽人人片| 忘忧草在线www成人影院| 国产日韩一级二级三级| 国产精品美乳一区二区免费| 国产不卡在线观看视频| 国产女人18毛片水真多18精品| 亚洲一区二区三区四区中文字幕| av一区二区三区四区电影| 日韩视频中文字幕在线观看| 精品中文在线| 亚洲成人你懂的| 精品一区二区视频| 国产一级片av| 仙踪林久久久久久久999| 欧美精品久久一区| 妺妺窝人体色www看人体| 黄色小视频免费观看| 国产亚洲亚洲| 中文字幕亚洲欧美| 亚洲一区二区偷拍| 麻豆国产在线| 中文字幕精品—区二区四季| 亚洲精品免费av| 久久久久久久99| 国产精品v一区二区三区| 亚洲美女性生活视频| 国产福利在线免费| 精品网站在线| 亚洲一线二线三线视频| 99热这里只有精品7| 香蕉视频国产在线| 美国毛片一区二区| 国语自产精品视频在线看| 欧美18—19性高清hd4k| 国产精品欧美三级在线观看| 制服丝袜亚洲色图| 日本日本19xxxⅹhd乱影响| 成年人免费在线视频| 国产成人精品亚洲日本在线桃色| 2023亚洲男人天堂| 尤物在线免费视频| 神马久久影院| 欧美一区二区三区电影| 毛片av免费在线观看| a天堂中文在线官网在线| 久久婷婷一区二区三区| 91亚洲精品一区二区| 97超碰中文字幕| 久久都是精品| 九九视频这里只有精品| 日韩福利在线视频| 欧美一区 二区| 亚洲免费影视第一页| 欧美精品日韩在线| 欧美ab在线视频| 最近中文字幕日韩精品| 国内精品久久99人妻无码| 欧洲大片精品免费永久看nba| 色猫猫国产区一区二在线视频| 久久精品在线免费视频| av在线播放网| 亚洲精品精品亚洲| 老汉色影院首页| av女在线播放| 亚洲成av人在线观看| 一本二本三本亚洲码| 欧美69xxx| 国产精品青草综合久久久久99| 免费av一区二区三区| 欧美熟妇交换久久久久久分类 | 国产激情视频在线| 欧美色欧美亚洲高清在线视频| 在线视频不卡国产| 幼a在线观看| 日本一区二区三区在线不卡| 99视频精品全部免费看| japanese23hdxxxx日韩| 一本久道久久综合中文字幕| 国产 福利 在线| 亚洲欧美在线人成swag| 欧美区视频在线观看| 欧美三级理论片| 欧美黄色网络| 日韩精品中文字| 女人被狂躁c到高潮| 这里视频有精品| 在线观看日韩高清av| 婷婷丁香激情网| 9i看片成人免费高清| 亚洲激情网站免费观看| av黄色在线网站| 男人添女人下部高潮视频在线观看| 99久久精品免费| 精品不卡一区二区三区| 国产精品一区在线看| 91小视频在线| 一区二区三区偷拍| 麻豆免费在线| 色8久久精品久久久久久蜜| 波多野结衣电影免费观看| 免费av一区二区三区四区| 日韩精品一区二区三区视频| 丝袜美腿中文字幕| 亚洲欧洲中文字幕| 亚洲最新中文字幕| 国产免费嫩草影院| 一区二区三区福利| 国产91精品视频在线观看| 国产欧美日韩成人| 国产精品亚洲专一区二区三区 | 嫩草国产精品入口| 欧美精品18videosex性欧美| 国产精品久久久精品四季影院| 亚洲女人av| 91av视频导航| 狠狠躁夜夜躁人人爽天天高潮| 亚洲国产高清一区| 欧美一级黑人aaaaaaa做受| 成人1区2区3区| av亚洲精华国产精华精华| 一区二区三区四区五区视频| 中文字幕这里只有精品| 亚洲第一二三四五区| 亚洲の无码国产の无码步美| 99tv成人影院| 不卡av日日日| 国产一级片播放| 伊人成人在线| 欧美怡春院一区二区三区| 丰满熟女一区二区三区| 亚洲男女毛片无遮挡| 杨幂一区二区国产精品| 亚州av乱码久久精品蜜桃| 国产欧美一区二区三区久久人妖| 无码视频在线观看| 国产一区亚洲一区| 51国偷自产一区二区三区| 污污视频在线免费看| 亚洲不卡av一区二区三区| 中文写幕一区二区三区免费观成熟| 一本一道久久a久久精品蜜桃| 成人网址在线观看| av大片在线| 一区二区成人在线视频| 色欲欲www成人网站| 天天躁日日躁狠狠躁欧美| 孩xxxx性bbbb欧美| 天堂中文在线资源| 国产精品情趣视频| 欧美国产日韩另类| 国产一区2区| 国产精品久久久久久av福利软件| 国产综合在线观看| 欧美日韩和欧美的一区二区| 永久免费看片视频教学| 黄色精品免费| 精品国产二区在线| 卡通欧美亚洲| 最近更新的2019中文字幕| 国产伦理吴梦梦伦理| 国产精品久久久久一区二区三区共| 日本成人xxx| 亚洲精品激情| 日韩在线电影一区| 91九色在线播放| 亚洲人成电影网| 亚洲视频免费播放| 久久婷婷综合激情| 涩多多在线观看| 亚洲美女毛片| 亚洲春色在线视频| 天堂网在线最新版www中文网| 精品视频在线导航| 亚洲在线视频播放| 久久只精品国产| 日本特黄a级片| 激情久久五月| 日韩欧美在线电影| 美腿丝袜亚洲图片| 久久综合伊人77777蜜臀| 蜜桃av中文字幕| 欧美亚洲高清一区| 醉酒壮男gay强迫野外xx| 蜜臀久久99精品久久久久久9| 国产精品入口免费| 69久久久久| 亚洲成年人影院在线| 国产一区二区视频网站| 亚洲蜜臀av乱码久久精品| 天天躁日日躁aaaxxⅹ| 中文在线不卡| 日本在线播放一区| 日韩三级毛片| 亚洲一区二区在线| 日韩不卡视频在线观看| 久久久亚洲欧洲日产国码aⅴ| 黄色一级片在线观看| 91国产成人在线| 在线观看成人毛片| 国产麻豆91精品| 日本熟妇人妻xxxxx| 黄色成人精品网站| 日韩久久在线| 国产真实有声精品录音| 国产一区二区免费在线观看| 激情五月综合婷婷| 国产精品亚洲网站| 欧美办公室脚交xxxx| 国外色69视频在线观看| а√天堂8资源在线官网| 亚洲精品视频中文字幕| 亚洲精品成人电影| 婷婷开心久久网| 国产老熟女伦老熟妇露脸| 国产精品99久久久久久久vr| 国产xxxxx视频| 欧美独立站高清久久| 免费在线国产精品| 欧美日韩看看2015永久免费| 91久久精品国产91久久性色tv| 97精品国产综合久久久动漫日韩 | 欧美成人黑人猛交| 新67194成人永久网站| 久久艹国产精品| jazzjazz国产精品久久| 成人亚洲欧美一区二区三区| 视频精品导航| 国产精品一区二区三区免费视频| 国产精品久久久久av电视剧| 青青久久aⅴ北条麻妃| 亚洲十八**毛片| 欧美国产日韩一区| 欧美aaaaa性bbbbb小妇| 91国内产香蕉| 在线成人av观看| 国产+人+亚洲| 综合在线影院| 国产精品久久999| 日韩av一级| 国产91在线播放| 亚洲免费一区| 91原创国产| 精品伊人久久久| 久久精品一二三区| 精品美女一区| 91久久国产综合久久91精品网站| 伊人亚洲精品| 99国产在线观看| 乱中年女人伦av一区二区| 任我爽在线视频精品一| 日韩欧美中文字幕在线视频| 亚洲r级在线观看| 超碰成人免费| 黄色国产精品一区二区三区| 国产精品三级| 在线不卡视频一区二区| 亚洲国产精品成人| 给我免费播放片在线观看| 奇米一区二区三区av| 亚洲天堂国产视频| 亚洲免费黄色| 欧美成人黑人猛交| 国产真实精品久久二三区| 国产免费a级片| 久久先锋影音av| www.xx日本| 亚洲国产婷婷综合在线精品| 日韩美女黄色片| 欧美日韩小视频| 在线精品免费视| 欧美三区免费完整视频在线观看| 国产又黄又大又粗的视频| 亚洲精品一区中文字幕乱码| 91porn在线观看| 欧美激情欧美激情在线五月| 涩涩涩视频在线观看| 91丨九色丨国产| 国产探花在线精品| 国产日韩第一页| 欧美亚洲免费| 欧美又黄又嫩大片a级| 久久亚洲捆绑美女| 男女做暖暖视频| 欧美性猛交xxxxx免费看| 国产黄频在线观看| 91精品福利在线一区二区三区 | 亚洲成av人乱码色午夜| 国产三级小视频| 国产视频精品在线| 国产黄色在线观看| 国产精品自拍偷拍视频| jazzjazz国产精品麻豆| 先锋影音亚洲资源| 中国女人久久久| gai在线观看免费高清| 久久亚洲影视婷婷| 美女毛片在线观看| 欧美日韩午夜影院| 色欲av永久无码精品无码蜜桃 | 一出一进一爽一粗一大视频| 中文字幕制服丝袜成人av| 激情五月少妇a| 欧美高清视频在线高清观看mv色露露十八| 天天爱天天干天天操| 欧美成人免费va影院高清| 78精品国产综合久久香蕉| 精品国产乱码久久久久久蜜柚 | 345成人影院| 国产成人亚洲欧美| 91亚洲成人| 婷婷激情四射五月天| 2021久久国产精品不只是精品| 久草视频中文在线| 精品国产一区久久| 午夜av在线免费观看| 欧美裸体男粗大视频在线观看| 韩国成人在线| 日本不卡一区二区三区在线观看| 亚洲国产一区二区精品专区| 日本特黄在线观看| 亚洲青青青在线视频| 1024手机在线视频| 91精品国产色综合久久ai换脸| av在线日韩国产精品| 国产盗摄xxxx视频xxx69 | 亚洲 日韩 国产第一区| 久久99伊人| 中文幕无线码中文字蜜桃| 亚洲国产一区二区在线播放| 天堂av在线免费| 97在线观看视频| 中文字幕乱码中文乱码51精品| 91色在线视频| 亚洲国产精品第一区二区三区| 精品久久久久一区二区| 亚洲综合成人网| www.av日韩| 欧洲美女免费图片一区| 国产欧美日韩| 波多野结衣xxxx| 一区二区三区在线视频观看58| 亚洲国产精品成人久久蜜臀| 欧美日韩国产123| 成人精品动漫一区二区三区| www国产黄色| 国产亚洲精久久久久久| 性高潮视频在线观看| 日韩西西人体444www| 色操视频在线| 国产专区一区二区| 久久一二三区| 日本一区二区视频在线播放| 欧美一区二区三区在线看| 男人天堂亚洲| 欧美大陆一区二区| 国产精品久久久久一区二区三区厕所 | jizzzz日本| 亚洲精品亚洲人成人网| 手机亚洲第一页| 国产精品美女主播| 欧美久色视频| 国产成人av免费观看| 色天天综合色天天久久| avtt在线播放| 国产超碰91| 久久 天天综合| 欧美xxxxx精品| 91福利区一区二区三区| а√中文在线8| 色综合久久av|