extern "C" __declspec(dllexport) string GetHTML(char*URL)
{
HINTERNET Session = InternetOpenA(NULL,INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL);
if (NULL == Session)
{
InternetCloseHandle(Session);
return "";
}
DWORD d = GetLastError();
URL = "http://www.baidu.com";
HINTERNET hHttpFile = InternetOpenUrlA(Session, URL, NULL,NULL, INTERNET_FLAG_NO_CACHE_WRITE, NULL);
if (NULL == hHttpFile)
{
InternetCloseHandle(hHttpFile);
InternetCloseHandle(Session);
CHAR szError[256];
DWORD dwErrorSize = 256;
DWORD dwLastErrorMsg;
InternetGetLastResponseInfo(&dwLastErrorMsg, (LPWSTR)szError, &dwErrorSize);
string m_strTmperror = szError;
d = GetLastError();
return "";
}
d = GetLastError();
char szSizeBuffer[32];
DWORD dwLengthSizeBuffer = sizeof(szSizeBuffer);
DWORD dwFileSize = 10 * 1024;
if (::HttpQueryInfo(hHttpFile, HTTP_QUERY_CONTENT_LENGTH, szSizeBuffer, &dwLengthSizeBuffer, NULL) == TRUE)
{
// allocating the memory space for http file contents
dwFileSize = atol(szSizeBuffer);
}
else
d = GetLastError();//總是到這里 12150 因為拿不到內容長度,資料總是不玩完整讀取,不是多了就是少了,為什么會沒有發現資料長度頭?
PBYTE pBuf = new BYTE[dwFileSize * sizeof(TCHAR)];
if (NULL == pBuf)
{
InternetCloseHandle(hHttpFile);
InternetCloseHandle(Session);
return FALSE;
}
DWORD dwReadDataLength = NULL;
BOOL bRet = TRUE;
do
{
//ZeroMemory(pBuf,dwMaxDataLength*sizeof(TCHAR));
bRet = InternetReadFile(hHttpFile, pBuf, dwFileSize, &dwReadDataLength);
} while (NULL != dwReadDataLength);
return (char*)pBuf;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/91083.html
標籤:網絡編程
下一篇:vc++創建執行緒顯示型別不兼容
