如题
我就写一个爬虫而已,过一会程序莫名其妙就unexpected handle
调试也找不到原因,我都快崩溃了
代码如下:
CStringA Temp;
CInternetSession Session(_T("Microsoft Internet Browser"), 1UL, INTERNET_OPEN_TYPE_PROXY, pstrProxyName, NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE); //不设置名字会调用 AfxGetAppName()
//
Session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 5000); // 连接超时
Session.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 5000); // 发送超时
Session.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT, 5000); // 接收超时
Session.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 1); // 1次重试
//
CHttpConnection *pHttpConnect = NULL;
CHttpFile *pHttpFile = NULL;
//
CStringA RecvBufferA;
int nBufferLen = 2048;
//
DWORD dwStatus = 0;
LPCTSTR pszAcceptType[] = { _T("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"), NULL };
//
try
{
pHttpConnect = Session.GetHttpConnection(pstrServer);
pHttpFile = pHttpConnect->OpenRequest(CHttpConnection::HTTP_VERB_GET
, pstrObjectName //访问页面
, _T("") //来源
, 1UL
, pszAcceptType
, _T("HTTP/1.1")
, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE);// INTERNET_FLAG_NO_AUTO_REDIRECT不自动重定向
if (pHttpFile)
{
pHttpFile->SendRequest();// 第二个参数为POST数据
pHttpFile->QueryInfoStatusCode(dwStatus);
pHttpFile->Read(RecvBufferA.GetBuffer(nBufferLen), nBufferLen - 1);
RecvBufferA.ReleaseBuffer();
}
}
catch (CInternetException* pEx)
{
TCHAR sz[1024];
pEx->GetErrorMessage(sz, 1024);
_tprintf_s(_T("ERROR! %s\n"), sz);
pEx->Delete();
Sleep(5000);
}
// if the connection is open, close it
if (NULL != pHttpConnect)
{
pHttpConnect->Close();
delete pHttpConnect;
}
if (NULL != pHttpFile)
{
pHttpFile->Close();
delete pHttpFile;
}
Session.Close();