bool CWinpcapGetURL::DownLoadWBList(LPCSTR ServerName, LPCSTR lpObject, int nPort)//下载黑白名单
{
HINTERNET hSession = NULL;
HINTERNET hConnect = NULL;
DWORD dwBytesRead = 0;
char * pBuffer;
FILE* hWDListFile;
HINTERNET hRequest=NULL;
hSession = InternetOpen("HttpSendRequest",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
if(!hSession){
goto quit;
}
hConnect = InternetConnect(hSession, ServerName, nPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
if(!hConnect)
{
goto quit;
}
hRequest = HttpOpenRequest (hConnect, "GET", lpObject, NULL, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE, 0);
if (!hRequest)
{
goto quit;
}
{
BOOL bSendRequest = ::HttpSendRequest(hRequest, NULL, 0, 0, 0);
//Get the length of the file.
char bufQuery[32];
DWORD dwLengthBufQuery = sizeof(bufQuery);
BOOL bQuery = ::HttpQueryInfo(hRequest, HTTP_QUERY_CONTENT_LENGTH,bufQuery,&dwLengthBufQuery,NULL);
DWORD dwFileSize = (DWORD)atol(bufQuery);
pBuffer = new char[dwFileSize+1];
if(!InternetReadFile(hRequest, pBuffer, dwFileSize+1, &dwBytesRead))
{
goto quit;
}
if( dwBytesRead == 0)
goto quit;
pBuffer[dwBytesRead] = 0;
string s_WDListFile = CGlobalTools::g_szCurrentDirectory;
s_WDListFile.append("WBListCache.bak");
hWDListFile = fopen(s_WDListFile.c_str(),"w+");
DWORD dWriteSize = fwrite(pBuffer,1,dwBytesRead,hWDListFile);
}
quit:
if(hSession)
InternetCloseHandle(hSession);
if(hRequest)
InternetCloseHandle(hRequest);
if (hConnect)
InternetCloseHandle(hConnect);
if (hWDListFile != NULL )
fclose(hWDListFile);
if (pBuffer)
{
delete[] pBuffer;
pBuffer = NULL;
}
return true;
}