亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? httpdown.cpp

?? 本程序是VC為平臺(tái)開發(fā)的股票資訊系統(tǒng)
?? CPP
字號(hào):
// HttpDown.cpp : implementation file
//

#include "stdafx.h"
#include "HttpDown.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CHttpDown

static const TCHAR szHeaders[] = _T("Accept: */*\r\n");
static const TCHAR AgentName[] = _T("USER");
static DWORD dwHttpRequestFlags =	INTERNET_FLAG_EXISTING_CONNECT |  INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE ; 

void CSearchSession::OnStatusCallback(DWORD dwContext, 
		DWORD dwInternetStatus,LPVOID lpvStatusInfomration, 
		DWORD dwStatusInformationLen)
{
	CString strStatus;
	switch(dwInternetStatus)
	{
	case INTERNET_STATUS_STATE_CHANGE:	
		strStatus= _T("服務(wù)器正忙");
		break;
	case INTERNET_STATUS_REQUEST_COMPLETE:
		strStatus= _T("請(qǐng)求完成");
		break;
	case INTERNET_STATUS_CONNECTING_TO_SERVER:
		strStatus= _T("正在連接到服務(wù)器...");
		break;
	case INTERNET_STATUS_RESOLVING_NAME:
		strStatus.Format(_T("解析主機(jī)地址..."));
		break;
	case INTERNET_STATUS_NAME_RESOLVED:	
		strStatus.Format(_T("主機(jī)地址已確認(rèn)"));
		break;
	case INTERNET_STATUS_CONNECTED_TO_SERVER:
		strStatus= _T("成功連接到服務(wù)器");
		break;
	case INTERNET_STATUS_SENDING_REQUEST:	
		strStatus= _T("正在發(fā)送請(qǐng)求...");
		break;
	case INTERNET_STATUS_REQUEST_SENT:	
		strStatus= _T("請(qǐng)求發(fā)送成功");
		break;
	case INTERNET_STATUS_RECEIVING_RESPONSE:
		strStatus= _T("正在接收數(shù)據(jù)...");
		break;
//		strStatus= _T("正在接收回應(yīng)...");
//		break;
//	case INTERNET_STATUS_RESPONSE_RECEIVED:	
//		strStatus= _T("回應(yīng)接收成功");
//		break;
	case INTERNET_STATUS_CLOSING_CONNECTION:
		strStatus= _T("正在關(guān)閉連接...");
		break;
	case INTERNET_STATUS_CONNECTION_CLOSED:	
		strStatus= _T("連接關(guān)閉成功");
		break;
	case INTERNET_STATUS_HANDLE_CLOSING:
		strStatus= _T("正在關(guān)閉連接...");
	case INTERNET_STATUS_HANDLE_CREATED:
		strStatus= _T("連接已經(jīng)建立");
		break;
	case INTERNET_STATUS_REDIRECT:
		strStatus = _T("重定向地址");
		break;
//	case INTERNET_STATUS_CTL_RESPONSE_RECEIVED:
//	default:
//		strStatus.Format(_T("未知狀態(tài): %d"), dwInternetStatus);
//		break;
	}

	LPCTSTR pStauts = strStatus;
	::SendMessage (AfxGetMainWnd()->m_hWnd,
		WM_USER_SERVER_STATUS, (WPARAM)dwContext,(LPARAM)pStauts);
}

CHttpDown::CHttpDown()
{
	m_pSession = NULL;
	m_pServer =NULL;
	m_pFile= NULL;
}

CHttpDown::~CHttpDown()
{
	CleanUp();
}

/////////////////////////////////////////////////////////////////////////////
// CHttpDown message handlers

BOOL CHttpDown::InitServer(URLParams *pURLParams)
{
	
	try{
		if(!pURLParams->m_strProxy.IsEmpty())
			m_pSession = new CSearchSession(AgentName,pURLParams->m_dwContext,
				INTERNET_OPEN_TYPE_PROXY,pURLParams->m_strProxy,pURLParams->m_strPort);   
		else
			m_pSession = new CSearchSession(AgentName,pURLParams->m_dwContext);
		int ntimeOut = 30;  // very important, can cause a Server time-out if set to low
							// or hang the thread if set to high.
		/*
		The time-out value in milliseconds to use for Internet connection requests. 
		If a connection request takes longer than this timeout, the request is canceled.
		The default timeout is infinite. */
		m_pSession->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,1000* ntimeOut);
		
		/* The delay value in milliseconds to wait between connection retries.*/
		m_pSession->SetOption(INTERNET_OPTION_CONNECT_BACKOFF,1000);
		
		if(pURLParams->m_dwTimeOut != 0)
			m_pSession->SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT,
				&pURLParams->m_dwTimeOut,sizeof(pURLParams->m_dwTimeOut));

		/* The retry count to use for Internet connection requests. If a connection 
		attempt still fails after the specified number of tries, the request is canceled.
		The default is five. */
		m_pSession->SetOption(INTERNET_OPTION_CONNECT_RETRIES,1);
        m_pSession->EnableStatusCallback(TRUE);

		}
		catch (CInternetException* pEx)
		{
			// catch errors from WinINet
			//pEx->ReportError();
			m_pSession = NULL;
			pEx->Delete();

			return FALSE ;
		}

	return TRUE;
}

BOOL CHttpDown::ParseURL(URLParams *pURLParams)
{
	BOOL bRet = FALSE;
	if(pURLParams->m_pszURL.IsEmpty()) return bRet;

	LPCTSTR lpsz = pURLParams->m_pszURL;
	if(lpsz  == NULL) return bRet;

	int nLen = lstrlen(lpsz);
	int i=0;
	while (nLen)
	{
		if( *lpsz == '/')	i++;
		++lpsz;
		nLen--;
		
	}
	if( i< 3) pURLParams->m_pszURL += '/';

	try
	{
		AfxParseURL(pURLParams->m_pszURL,pURLParams->m_dwServiceType,
			pURLParams->m_strServerName,pURLParams->m_strObject,
			pURLParams->m_nPort);
	}
	catch (CInternetException* pEx)
	{
		// catch errors from WinINet
		//pEx->ReportError();
		pEx->Delete();
		return bRet;
	}

	
	lpsz = pURLParams->m_strObject;
	if(lpsz  == NULL) return bRet;
	bRet = TRUE;
	nLen = lstrlen(lpsz);

	BOOL bdot = FALSE;
	while (nLen)
	{
		if( *lpsz == '.') bdot = TRUE;
		++lpsz;
		nLen--;
		
	}
	if(pURLParams->m_strObject.GetLength()-1 > 0)
	{
	if( bdot == FALSE && pURLParams->m_strObject[pURLParams->m_strObject.GetLength()-1] != '/')
		pURLParams->m_strObject += '/';
	}

	return bRet;
}

BOOL CHttpDown::GetHttpFile(LPCTSTR ServerName,LPCTSTR strObject,URLParams *pURLParams)
{
	CString rString;
	LPCTSTR lpsz;
	LPCTSTR lpszStop;
	int j=0;
	TCHAR sz[4096];
	memset(sz,'\0',sizeof(sz));

	if(strObject == NULL) return FALSE;

	DWORD dwRet = GetHttpStatus(ServerName, strObject,pURLParams);
	if(dwRet != HTTP_STATUS_OK){
		CString strStatus;
		switch(dwRet)
		{
		case ERROR_INTERNET_TIMEOUT:
			strStatus.Format(_T("與服務(wù)器連接超時(shí)"));
			break;
		case ERROR_INTERNET_NAME_NOT_RESOLVED:
			strStatus.Format(_T("無法連接到指定頁面"));
			break;
		case HTTP_STATUS_NOT_FOUND:
			strStatus.Format(_T("找不到服務(wù)器"));
			break;
//		default:
//			strStatus.Format(_T("未知錯(cuò)誤: %d"),dwRet);
//			break;
		}
		LPCSTR line = strStatus;
		::SendMessage(AfxGetMainWnd()->m_hWnd,
			WM_USER_SERVER_STATUS,0,(LPARAM)line);
//		::SendMessage(AfxGetMainWnd()->m_hWnd,
//			WM_USER_SEND_ERRINFO,0,(LPARAM)line);

		return FALSE;
	}

	long xx = pURLParams->m_dwIngoreLength;
	CString strLength;
	m_pFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH,strLength);
	DWORD dwLength = atol(strLength);
	if(pURLParams->m_dwIngoreLength != -1 && 
		dwLength > pURLParams->m_dwIngoreLength) return FALSE;

	if(m_pFile != NULL && m_pServer != NULL && m_pSession != NULL)
	{
		try
		{
			while (m_pFile->ReadString(sz, 4095))
			{
					rString = _T("");		
					lpsz = sz;
					if(lpsz != NULL)
					{
						lpszStop = sz + lstrlen(sz);
						j=0;
						while (lpsz < lpszStop)
						{
//							if(*lpsz =='\n')	rString += "\r\n";
							if(*lpsz =='\n')	rString += '\n';

							else rString += sz[j];

							++lpsz;
							j++;

						}
						pURLParams->m_Contents += rString;
					}
			}
		}
		catch (CInternetException* pEx)
		{
			m_pFile= NULL;
			pEx->Delete();
			return 0;
		}
	}

	return TRUE;
}

DWORD CHttpDown::NewConnection(LPCTSTR ServerName,LPCTSTR strObject,URLParams *pURLParams)
{
	if(ServerName  == NULL || strObject == NULL) return 0;
	DWORD dwRet =  HTTP_STATUS_OK;
	INTERNET_PORT nPort = INTERNET_DEFAULT_HTTP_PORT;

	try{
		if(!pURLParams->m_strProxy.IsEmpty())
			m_pSession = new CSearchSession(AgentName,pURLParams->m_dwContext,
				INTERNET_OPEN_TYPE_PROXY,pURLParams->m_strProxy,pURLParams->m_strPort);   
		else
			m_pSession = new CSearchSession(AgentName,pURLParams->m_dwContext);
		int ntimeOut = 30;
		/*
		The time-out value in milliseconds to use for Internet connection requests. 
		If a connection request takes longer than this timeout, the request is canceled.
		The default timeout is infinite. */
		m_pSession->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,1000* ntimeOut);
		
		/* The delay value in milliseconds to wait between connection retries.*/
		m_pSession->SetOption(INTERNET_OPTION_CONNECT_BACKOFF,1000);

		if(pURLParams->m_dwTimeOut != 0)
			m_pSession->SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT,
				&pURLParams->m_dwTimeOut,sizeof(pURLParams->m_dwTimeOut));

		/* The retry count to use for Internet connection requests. If a connection 
		attempt still fails after the specified number of tries, the request is canceled.
		The default is five. */
		m_pSession->SetOption(INTERNET_OPTION_CONNECT_RETRIES,2);

		m_pSession->EnableStatusCallback(TRUE);
//		m_pSession->m_strHttpSite.Format(_T("%s%s"),ServerName,strObject);
	}
	catch (CInternetException* pEx)
	{
		// catch errors from WinINet
		dwRet = pEx->m_dwError;
		m_pSession=NULL;
		pEx->Delete();
		return  dwRet;
	}
	try
	{
		m_pServer = m_pSession->GetHttpConnection(ServerName,nPort);
	}
	catch (CInternetException* pEx)
	{
		// catch errors from WinINet
		dwRet = pEx->m_dwError;
		m_pServer = NULL;
		pEx->Delete();
		CleanUp();
		return   dwRet;
	}

	m_strCurrentServer = ServerName;
	try
	{
		// This can never return NULL. The call may have failed, but it can
		// never be null.
		m_pFile = m_pServer->OpenRequest(_T("GET"),strObject,NULL, 
			pURLParams->m_dwContext, NULL, NULL, dwHttpRequestFlags);
		m_pFile->SendRequest();
	}
	catch (CInternetException* pEx)
	{
		// catch errors from WinINet
		dwRet = pEx->m_dwError;
		m_pFile = NULL;
		pEx->Delete();
		CleanUp();
		return dwRet;
	}

	return dwRet;
}

DWORD CHttpDown::GetHttpStatus(LPCTSTR lpServerName,LPCTSTR strObject,URLParams *pURLParams)
{
	if(lpServerName  == NULL || strObject == NULL) return 0;

	INTERNET_PORT nPort = INTERNET_DEFAULT_HTTP_PORT;
	DWORD dwRet =  1;

	if (m_pSession == NULL)
		return dwRet;
//	m_pSession->m_strHttpSite.Format(_T("%s%s"),lpServerName,strObject);

	dwRet =  2;
	if(m_pFile != NULL)
	{
		m_pFile->Close();
		delete m_pFile;
		m_pFile=NULL;
	}
	
	if (m_strCurrentServer != lpServerName)
	{
		// Picked a new server, close out connection and make a new one:
		if (m_pServer != NULL)
		{
			m_pServer->Close ();
			delete m_pServer;
			m_pServer = NULL;
		}
	}

	if (m_pServer == NULL)
	{
		try
		{
			m_pServer = m_pSession->GetHttpConnection(lpServerName,nPort);
		}
		catch (CInternetException* pEx)
		{
			dwRet = pEx->m_dwError;
			m_pServer = NULL;
			pEx->Delete();
			if(!CleanUp()) return FALSE;
			return dwRet;
		}

		m_strCurrentServer = lpServerName;
	}


	if (m_pServer == NULL) return dwRet;
  
	try
	{
		// This can never return NULL. The call may have failed, but it can
		// never be null.
		m_pFile = m_pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,
			strObject,NULL, pURLParams->m_dwContext, NULL, NULL, dwHttpRequestFlags);
		m_pFile->SendRequest();
	}
	catch (CInternetException* pEx)
	{
		// catch errors from WinINet
		//pEx->ReportError();
		dwRet = pEx->m_dwError;
		m_pFile = NULL;
		pEx->Delete();
		if(!CleanUp()) return FALSE;
		if(dwRet == ERROR_INTERNET_TIMEOUT ) Sleep(1000);  // Connection timed out, try again on new connection
		dwRet = NewConnection(lpServerName,strObject,pURLParams);
		if(dwRet != HTTP_STATUS_OK) return dwRet;
	}

	if(m_pFile != NULL)
		m_pFile->QueryInfoStatusCode(dwRet);

	return dwRet;
}

BOOL CHttpDown::CleanUp()
{
	m_strCurrentServer.Empty();
	try
	{
		if(m_pFile != NULL)
		{	m_pFile->Close();
			delete m_pFile;
			m_pFile= NULL;
		}
		if (m_pServer!= NULL)
		{
			m_pServer->Close();
			delete m_pServer;
			m_pServer = NULL;
		}
		if (m_pSession != NULL)
		{
			m_pSession->Close();
			delete m_pSession;
			m_pSession = NULL;
		}
	}
//	catch (CInternetException* pEx)
//	{
//		// catch errors from WinINet
//		pEx->Delete();
//		return FALSE;
//	}
	catch(...)
	{
		return FALSE;
	}

	return TRUE;
}

CString CHttpDown::GetHttpFileGet(LPCTSTR pstrURL,
		DWORD dwContext/* = 1000*/,DWORD dwTimeOut/* = 0*/,
		LPCTSTR pstrProxy/* = NULL*/,LPCTSTR pstrPort/* = NULL*/,
		DWORD dwIngoreLength/* = -1*/)
{
    URLParams *pURLParams = new URLParams;
	pURLParams->m_pszURL = pstrURL;
	pURLParams->m_dwContext = dwContext;
	pURLParams->m_dwTimeOut = dwTimeOut;
	pURLParams->m_dwIngoreLength = dwIngoreLength;
	if(pstrProxy != NULL)
		pURLParams->m_strProxy = pstrProxy;
	if(pstrPort != NULL)
		pURLParams->m_strPort = pstrPort;
	if(!InitServer(pURLParams)) {
		dwError = ERROR_INIT_SERVER;
		delete pURLParams;
//		return NULL;
		return _T("");
	}

	if(pURLParams->m_pszURL.IsEmpty()){
		dwError = ERROR_URL_NULL;
		delete pURLParams;
//		return NULL;
		return _T("");
	}

	if(!pURLParams){
		dwError = ERROR_NEW_PARAMS;
		delete pURLParams;
//		return NULL;
		return _T("");
	}

	if(!ParseURL(pURLParams)) {
		dwError = ERROR_PARSE_URL;
		delete pURLParams;
//		return NULL;
		return _T("");
	}

	if(!GetHttpFile(pURLParams->m_strServerName,pURLParams->m_strObject,pURLParams))
	{
		dwError = ERROR_GET_HTTPFILE;
		delete pURLParams;
//		return NULL;
		return _T("");
	}

//	LPCTSTR pContent = pURLParams->m_Contents;
//	delete pURLParams;
//	return pContent;
	return pURLParams->m_Contents;
}

CString CHttpDown::GetLastErrorText()
//LPCTSTR CHttpDown::GetLastErrorText()
{
	CString strError;
	switch(dwError)
	{
	case ERROR_NEW_PARAMS:
		strError.Format(_T("內(nèi)存申請(qǐng)失敗"));
		break;
	case ERROR_INIT_SERVER:
		strError.Format(_T("連接到服務(wù)器失敗"));
		break;
	case ERROR_URL_NULL:
		strError.Format(_T("地址為空"));
		break;
	case ERROR_PARSE_URL:
		strError.Format(_T("解析地址失敗"));
		break;
	case ERROR_GET_HTTPFILE:
		strError.Format(_T("接收文件時(shí)出錯(cuò)"));
		break;
	}
//	LPCTSTR pstrError = strError;
//	return pstrError;
	return strError;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人高清在线| 欧美亚洲禁片免费| 图片区小说区国产精品视频| 欧美精品一区二区三区视频| 在线观看亚洲专区| 国产91丝袜在线播放九色| 亚洲国产日韩a在线播放性色| 久久综合九色综合97婷婷女人| 欧洲日韩一区二区三区| 国产69精品久久久久毛片| 污片在线观看一区二区| 亚洲免费av高清| 中文字幕不卡在线观看| www国产成人| 日韩三级高清在线| 欧美精品在线一区二区三区| 99麻豆久久久国产精品免费| 国产伦精一区二区三区| 日本欧美肥老太交大片| 香蕉久久一区二区不卡无毒影院| 亚洲色图视频网| 国产欧美综合在线| 精品国产91亚洲一区二区三区婷婷| 欧美在线综合视频| 91九色最新地址| 成人高清免费在线播放| 国产精品一级在线| 激情丁香综合五月| 麻豆精品在线观看| 欧美a一区二区| 日韩影视精彩在线| 丝袜亚洲另类丝袜在线| 视频一区在线视频| 天天色天天操综合| 五月天婷婷综合| 首页国产欧美日韩丝袜| 五月天一区二区三区| 五月激情丁香一区二区三区| 香蕉久久夜色精品国产使用方法| 一区二区久久久久| 香蕉成人伊视频在线观看| 亚洲午夜影视影院在线观看| 亚洲一区二区三区激情| 亚洲va国产天堂va久久en| 亚洲第一狼人社区| 日韩精品亚洲专区| 男女性色大片免费观看一区二区| 日韩精品一级二级| 加勒比av一区二区| 懂色av一区二区三区免费观看| 丁香激情综合五月| 色综合天天综合色综合av| 一本色道**综合亚洲精品蜜桃冫 | 精品一二三四区| 久久99热狠狠色一区二区| 激情综合五月婷婷| caoporen国产精品视频| 在线免费观看一区| 欧美精三区欧美精三区| 欧美精品一区二区三区蜜桃| 亚洲国产精品黑人久久久| 亚洲欧美在线另类| 五月天激情综合| 国产一区二区精品在线观看| 成人黄页毛片网站| 欧美色爱综合网| 日韩精品中文字幕一区二区三区| 久久久三级国产网站| 日韩毛片在线免费观看| 五月激情六月综合| 国产精品一区二区x88av| 色综合亚洲欧洲| 日韩精品一区二区三区在线| 亚洲国产精品99久久久久久久久| 伊人夜夜躁av伊人久久| 久久精品国产亚洲a| av成人免费在线| 555夜色666亚洲国产免| 亚洲国产精品高清| 亚洲成av人片| 国产aⅴ综合色| 欧美性色黄大片手机版| 2021久久国产精品不只是精品| 亚洲私人黄色宅男| 久久国产成人午夜av影院| 91蜜桃婷婷狠狠久久综合9色| 欧美一级片在线看| 国产精品视频一二| 免费观看成人av| 91香蕉视频污在线| 久久久噜噜噜久久中文字幕色伊伊| 一区二区三区在线播| 久久99精品久久只有精品| 91国偷自产一区二区开放时间| 精品欧美久久久| 亚洲电影第三页| 成人国产精品免费| 久久综合色8888| 日韩激情中文字幕| 色菇凉天天综合网| 国产欧美一区二区三区沐欲 | 成人网男人的天堂| 欧美一级欧美三级在线观看| 亚洲欧美一区二区久久| 国内成+人亚洲+欧美+综合在线| 欧美午夜寂寞影院| 中文字幕在线观看一区二区| 国产一区二区看久久| 欧美一区二区三区在线视频| 亚洲一区中文在线| 色悠久久久久综合欧美99| 国产精品欧美一级免费| 国产一区亚洲一区| 日韩视频一区在线观看| 日日骚欧美日韩| 欧美性色黄大片手机版| 一区二区三区影院| 99久久er热在这里只有精品15 | 欧美一区日韩一区| 亚洲福利视频三区| 96av麻豆蜜桃一区二区| 国产精品国产三级国产aⅴ原创| 国产福利不卡视频| 久久老女人爱爱| 国产乱子轮精品视频| 精品免费日韩av| 精品一区二区三区影院在线午夜| 欧美一级黄色片| 亚洲午夜一区二区| 欧美日韩电影在线| 偷拍日韩校园综合在线| 欧美美女喷水视频| 性感美女极品91精品| 欧美丰满嫩嫩电影| 日韩avvvv在线播放| 日韩一区二区三区免费看 | 国产精品无遮挡| 成人免费精品视频| 国产精品久久久久久妇女6080| 成人久久18免费网站麻豆| 中文字幕一区免费在线观看| 972aa.com艺术欧美| 亚洲激情五月婷婷| 日本韩国精品一区二区在线观看| 亚洲免费成人av| 欧美日本一道本在线视频| 五月激情丁香一区二区三区| 日韩一区二区三区免费观看| 精品一区二区在线观看| 国产亚洲综合av| 91丨porny丨国产入口| 亚洲欧美偷拍三级| 欧美日韩国产一级| 美女视频网站黄色亚洲| 久久人人爽人人爽| 不卡一区在线观看| 亚洲精品第1页| 91精品国产高清一区二区三区 | 久久女同精品一区二区| 粉嫩aⅴ一区二区三区四区| 亚洲桃色在线一区| 在线播放一区二区三区| 国内精品嫩模私拍在线| 国产精品久久国产精麻豆99网站| 在线视频国内自拍亚洲视频| 日本特黄久久久高潮| 国产亚洲欧美色| 91福利精品第一导航| 久久se精品一区二区| 国产精品传媒入口麻豆| 欧美猛男男办公室激情| 国产一区二区三区免费看| 亚洲精品综合在线| 日韩视频免费观看高清完整版在线观看| 国产精品一区久久久久| 亚洲码国产岛国毛片在线| 日韩欧美中文字幕一区| jlzzjlzz亚洲日本少妇| 日日夜夜免费精品视频| 国产精品女人毛片| 日韩一级视频免费观看在线| gogo大胆日本视频一区| 偷拍亚洲欧洲综合| 国产精品高潮呻吟久久| 日韩精品一区二区三区四区| 99精品国产99久久久久久白柏| 婷婷综合另类小说色区| 国产精品久久久久久久裸模| 欧美精品1区2区| 97久久超碰国产精品电影| 蜜臀精品一区二区三区在线观看| 国产精品福利影院| 精品国产区一区| 欧美三级日本三级少妇99| 国产91在线看| 美女视频网站久久| 午夜一区二区三区视频| 国产精品天天看| 欧美不卡一区二区三区| 欧美日韩一二区|