本文整理汇总了C++中CHttpFile::QueryInfoStatusCode方法的典型用法代码示例。如果您正苦于以下问题:C++ CHttpFile::QueryInfoStatusCode方法的具体用法?C++ CHttpFile::QueryInfoStatusCode怎么用?C++ CHttpFile::QueryInfoStatusCode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CHttpFile
的用法示例。
在下文中一共展示了CHttpFile::QueryInfoStatusCode方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetFirstGoalUrl
BOOL CProxyIP::GetFirstGoalUrl(const TCHAR* pSrcUrl, TCHAR* pGoalUrl)
{
BOOL bRet = FALSE;
CHttpFile* pHttpFile = (CHttpFile *)m_pSession->OpenURL(pSrcUrl);
DWORD dwStatusCode = 0;
pHttpFile->QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode == HTTP_STATUS_OK)
{
CString strData;
wstring subStr = _T("国内网页http代理ip地址服务器");
while(pHttpFile->ReadString(strData))
{
TCHAR mainStr[MAX_STR_LEN] = {0};
ConvertMultiByteToWideChar((char *)strData.GetBuffer(), mainStr, MAX_STR_LEN);
wstring wMainStr = mainStr;
if (wMainStr.find(subStr) < wMainStr.length())
{
int startLoc = wMainStr.find(_T("href"));
int endLoc = wMainStr.find(_T("title"));
endLoc -= 2;
startLoc += 6;
wstring wTempUrl = wMainStr.substr(startLoc, endLoc-startLoc).c_str();
wmemcpy(pGoalUrl, wTempUrl.c_str(), wcslen(wTempUrl.c_str())+1);
bRet = TRUE;
break;
}
}
}
pHttpFile->Close();
delete pHttpFile;
return bRet;
}
示例2: if
int CXCCRA2MapUpdaterApp::download_update(string link, string fname)
{
int error = 0;
CInternetSession is;
CHttpFile* f = reinterpret_cast<CHttpFile*>(is.OpenURL(link.c_str(), INTERNET_FLAG_TRANSFER_BINARY));
if (!f)
error = 1;
else
{
Cvirtual_file h;
DWORD status;
if (!f->QueryInfoStatusCode(status))
error = 2;
else if (status != 200)
error = 3;
else
{
int total_size = f->Seek(0, CFile::end);
f->Seek(0, CFile::begin);
Cdownload_dlg dlg;
dlg.set(link, fname, total_size);
dlg.Create(Cdownload_dlg::IDD, NULL);
dlg.EnableWindow(false);
Cvirtual_binary t;
while (!error)
{
int cb_p = min<int>(f->GetLength(), 1 << 10);
if (!cb_p)
break;
f->Read(t.write_start(cb_p), cb_p);
h.write(t);
dlg.set_size(h.size());
dlg.UpdateWindow();
}
h.compact();
Cxif_key k;
if (k.load_key(h.data(), h.size()))
error = 5;
else
{
for (t_xif_key_map::const_iterator ki = k.m_keys.begin(); ki != k.m_keys.end(); ki++)
{
if (error)
break;
const Cxif_key& l = ki->second;
string fext = boost::to_lower_copy(Cfname(l.get_value_string(vi_fname)).get_fext());
if (fext != ".mmx"
&& (fext != ".yro") || !Cfname(xcc_dirs::get_exe(game_ra2_yr)).exists())
continue;
if (file32_write(Cfname(fname).get_path() + l.get_value_string(vi_fname), l.get_value(vi_fdata).get_data(), l.get_value(vi_fdata).get_size()))
error = 6;
}
}
dlg.DestroyWindow();
}
f->Close();
}
return error;
}
示例3: OnBtnSendpost
void CHttpPostDlg::OnBtnSendpost()
{
CInternetSession m_InetSession(_T("session"),
0,
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
INTERNET_FLAG_DONT_CACHE); //设置不缓冲
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
CString strHtml = "";
CString ActionServer = _T("www.cqjg.gov.cn");
CString strRequest = _T("LicenseTxt=AG8091&VIN=LJDAAA21560205432"); //POST过去的数据
CString strHeaders = "Accept: text*/*\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon;";
int nRead = 0;
try
{
INTERNET_PORT nPort = 80; //端口
pServer = m_InetSession.GetHttpConnection(ActionServer, nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,"/netcar/FindOne.aspx");
pFile->AddRequestHeaders(strHeaders);
pFile->SendRequestEx(strRequest.GetLength());
pFile->WriteString(strRequest); //重要-->m_Request 中有"name=aaa&name2=BBB&..."
pFile->EndRequest();
DWORD dwRet;
pFile->QueryInfoStatusCode(dwRet);
if (dwRet == HTTP_STATUS_OK)
{
CString strLine;
while ((nRead = pFile->ReadString(strLine))>0)
{
strHtml += strLine + "\n";;
}
}
int pos = strHtml.Find(_T("<li class=\"lithreeC\">"));
if(pos != -1)
{
CString Value = strHtml.Mid(pos,500);
CFile file("test.html",CFile::modeCreate|CFile::modeWrite);
file.WriteHuge(Value.GetBuffer(0),Value.GetLength());
file.Close();
//MessageBox(Value);
}
delete pFile;
delete pServer;
}
catch (CInternetException* e)
{
char strErrorBuf[255];
e->GetErrorMessage(strErrorBuf,255,NULL);
AfxMessageBox(strErrorBuf,MB_ICONINFORMATION);
}
// SendPost();
}
示例4: DownloadFile
BOOL CAutoUpdateDlg::DownloadFile(LPCTSTR lpURL,LPCTSTR lpDestFile)
{
CFile cUdpFile;
if(!cUdpFile.Open(lpDestFile,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary|CFile::shareDenyWrite))
return FALSE;
BOOL bResult = FALSE;
CInternetSession sessionDownload;
try
{
CHttpFile* pFile = (CHttpFile*)sessionDownload.OpenURL(lpURL,1,INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE);
CString query = _T("");
pFile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH,query);
long file_len=_ttol(query);
m_dwTotalSize = file_len;
PostMessage(WM_POSMESSAGE,0,0);
DWORD dwStatus;
if (pFile->QueryInfoStatusCode(dwStatus))
{
if (dwStatus == 200)
{
pFile->SetReadBufferSize(10240);
if (TRUE)
{
DWORD dwLen = 0;
char buf[BLOCKSIZE];
while (TRUE)
{
DWORD dwTemp = pFile->Read(buf,BLOCKSIZE);
if (dwTemp)
{
cUdpFile.Write(buf,dwTemp);
}
m_dwDownloadedSize += dwTemp;
PostMessage(WM_POSMESSAGE,0,0);
if (dwTemp < BLOCKSIZE)
{
break;
}
}
}
}
}
pFile->Close();
bResult = TRUE;
}
catch(CInternetException* pException)
{
pException->Delete();
return bResult;
}
sessionDownload.Close();
cUdpFile.Close();
return bResult;
}
示例5: userProfile
DWORD CLoginDlg::userProfile(LPCTSTR serverURL, LPCTSTR requestPage)
{
#ifdef _HTTPS
CInternetSession session(_T("HelloChat"), INTERNET_FLAG_SECURE);
CHttpConnection* pConnection = session.GetHttpConnection(serverURL, INTERNET_SERVICE_HTTP, INTERNET_DEFAULT_HTTPS_PORT);
CString strToken = L"token:";
strToken = strToken + m_strMyToken + L"\r\n";
CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET, requestPage, NULL, 1, NULL, NULL, INTERNET_FLAG_SECURE | INTERNET_FLAG_RELOAD |
INTERNET_FLAG_DONT_CACHE |
INTERNET_FLAG_NO_COOKIES);
#else
CInternetSession session(_T("HelloChat"), PRE_CONFIG_INTERNET_ACCESS);
CHttpConnection* pConnection = session.GetHttpConnection(serverURL);
CString strToken = L"token:";
//strToken = strToken + m_strToken + L"\r\n";
strToken = strToken + m_strMyToken + L"\r\n";
CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_GET, requestPage, NULL, 1, NULL, NULL, INTERNET_FLAG_RELOAD |
INTERNET_FLAG_DONT_CACHE |
INTERNET_FLAG_NO_COOKIES);
#endif
VERIFY(pFile->AddRequestHeaders(HEADER));
VERIFY(pFile->AddRequestHeaders(strToken));
VERIFY(pFile->SendRequest());
// GET POST STATUS
DWORD dwPostStatus = 0;
VERIFY(pFile->QueryInfoStatusCode(dwPostStatus));
CString strBuffer = L"";
BOOL brtn = pFile->ReadString(strBuffer);
char* rtnBuffer = LPSTR(LPCTSTR(strBuffer));
if (dwPostStatus == HTTP_STATUS_OK)
{
BOOL bRtn = dataParser(rtnBuffer);
if (!bRtn){
AfxMessageBox(L"User Info Paser Error");
}
}
else{
CComm func;
func.WriteErrorLog(rtnBuffer);
}
pFile->Close();
return dwPostStatus;
}
示例6: FillGoalUrlVec
BOOL CProxyIP::FillGoalUrlVec(const TCHAR* pFirstGoalUrl)
{
BOOL bRet = FALSE;
int totalPage = 0;
CHttpFile* pHttpFile = (CHttpFile *)m_pSession->OpenURL(pFirstGoalUrl);
DWORD dwStatusCode = 0;
pHttpFile->QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode == HTTP_STATUS_OK)
{
BOOL bCheck = FALSE;
CString strData;
wstring subStrPage = _T("class=\"pagelist\"");
while(pHttpFile->ReadString(strData))
{
TCHAR mainStr[MAX_STR_LEN] = {0};
ConvertMultiByteToWideChar((char *)strData.GetBuffer(), mainStr, MAX_STR_LEN);
wstring wMainStr = mainStr;
if (bCheck)
{
int lenn = wMainStr.find(_T("共"));
wstring wsPage = wMainStr.substr(lenn+1, 1).c_str();
totalPage = _wtoi(wsPage.c_str());
bCheck = FALSE;
break;
}
if (wMainStr.find(subStrPage) < wMainStr.length())
{
bCheck = TRUE;
}
}
wstring strGoalUrl = pFirstGoalUrl;
int lenHtml = strGoalUrl.find(_T(".html"));
wstring newStrGoalUrl = strGoalUrl.substr(0, lenHtml);
for (int j = 2; j <= totalPage; j++)
{
TCHAR tChar[MAX_URL_LEN] = {0};
swprintf(tChar, MAX_URL_LEN, _T("%s_%d.html"), newStrGoalUrl.c_str(), j);
m_goalUrlVec.push_back(tChar);
}
bRet = TRUE;
}
pHttpFile->Close();
delete pHttpFile;
return bRet;
}
示例7: DownLoadFile
bool CDlgView::DownLoadFile(const string&UrpPath ,const string& strFilePath)
{
CInternetSession session;
std::string strHtml;
try
{
CHttpFile* pfile = (CHttpFile*)session.OpenURL(UrpPath.c_str(),1,INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_RELOAD,NULL,0);
DWORD dwStatusCode;
pfile->QueryInfoStatusCode(dwStatusCode);
if(dwStatusCode == HTTP_STATUS_OK)
{
char strBuff[1025] = {0};
while ((pfile->Read((void*)strBuff, 1024)) > 0)
{
strHtml += strBuff;
}
}
else
{
return false;
}
pfile->Close();
delete pfile;
session.Close();
}
catch (CException* e)
{
e;//消除警告
return false;
}
if (!strHtml.empty())
{
ofstream outfile(strFilePath);
if (!outfile.is_open())
{
return false;
}
outfile<<strHtml;
outfile.close();
}
return true;
}
示例8: GetPageDirect
CString GetPageDirect(CString rAddress)
{
CString szResult;
DWORD dwRet = 0; // HTTP返回码
CString strServerName, strObject;
DWORD dwSvrType;
INTERNET_PORT nPort;
const TCHAR szHeaders[] = _T("Accept: text/*\r\nUser-Agent: CInternetThread\r\n");
AfxParseURL(rAddress, dwSvrType, strServerName, strObject, nPort);
CInternetSession session("MySessionDirect");
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
try
{
pServer = session.GetHttpConnection(strServerName, nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject);
pFile->AddRequestHeaders(szHeaders);
pFile->SendRequest();
pFile->QueryInfoStatusCode(dwRet);
if (dwRet < 400)
{
char szBuff[1024];
UINT nRead = pFile->Read(szBuff, 1023);
while (nRead > 0)
{
szBuff[nRead] = '\0';
szResult.Append(szBuff);
nRead = pFile->Read(szBuff, 1023);
}
}
delete pFile;
delete pServer;
}
catch (CInternetException* pEx)
{
//uiResult = 0;
}
session.Close();
return szResult;
}
示例9: GetTallyTBResponse
/* ===================================================================
* GET Tally TB Response for a given request
* ===================================================================
*/
BOOL CTallyExporterDlg::GetTallyTBResponse(CString& xmlTBRequestRef,vector<string>& allRowsOfTBRef, int port)
{
CInternetSession session(_T("TB Session"));
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
try
{
CString strServerName;
DWORD dwRet = 0;
CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded;Accept-Encoding: gzip,deflate");
CString acceptedTypes[] = {_T("text/html")};
pServer = session.GetHttpConnection(_T("localhost"),NULL, port, NULL, NULL);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T(""), NULL,1,(LPCTSTR*)acceptedTypes,NULL,INTERNET_FLAG_EXISTING_CONNECT);
pFile->SendRequest(strHeaders, (LPVOID)(LPCTSTR)xmlTBRequestRef, xmlTBRequestRef.GetLength());
pFile->QueryInfoStatusCode(dwRet);
CString csvLinesToBeRead;
CString& csvLinesToBeReadRef = csvLinesToBeRead;
if (dwRet == HTTP_STATUS_OK)
{
while (pFile->ReadString(csvLinesToBeReadRef) == TRUE)
{
allRowsOfTBRef.push_back((LPCTSTR)csvLinesToBeReadRef);
}
}
else
{
//Do something as server is not sending response as expected.
}
delete pFile;
delete pServer;
}
catch (CInternetException* pEx)
{
//catch errors from WinInet
TCHAR pszError[64];
pEx->GetErrorMessage(pszError, 64);
_tprintf_s(_T("%63s"), pszError);
}
session.Close();
return false;
}
示例10: GetCompanyListFromTallyServer
/*
* Connect to the Tally over a specific port and get all the companies
*/
BOOL CTallyExporterDlg::GetCompanyListFromTallyServer(int port, CompanyListResponse& companyListResponseRef)
{
CInternetSession session(_T("My Session"));
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
try
{
CString strServerName;
DWORD dwRet = 0;
CString strParam = "<ENVELOPE><HEADER><TALLYREQUEST>Export Data</TALLYREQUEST></HEADER><BODY><EXPORTDATA><REQUESTDESC><REPORTNAME>List of Companies</REPORTNAME></REQUESTDESC></EXPORTDATA></BODY></ENVELOPE>";
CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded;Accept-Encoding: gzip,deflate");
CString acceptedTypes[] = {_T("text/html")};
pServer = session.GetHttpConnection(_T("localhost"),NULL, port, NULL, NULL);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T(""), NULL,1,(LPCTSTR*)acceptedTypes,NULL,INTERNET_FLAG_EXISTING_CONNECT);
pFile->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strParam, strParam.GetLength());
pFile->QueryInfoStatusCode(dwRet);
if (dwRet == HTTP_STATUS_OK)
{
CHAR szBuff[1024];
while (pFile->Read(szBuff, 1024) > 0)
{
printf_s("%1023s", szBuff);
}
GetCompanyListFromCSVResponse(companyListResponseRef, szBuff);
}
else
{
//Do something as server is not sending response as expected.
}
delete pFile;
delete pServer;
}
catch (CInternetException* pEx)
{
//catch errors from WinInet
TCHAR pszError[64];
pEx->GetErrorMessage(pszError, 64);
_tprintf_s(_T("%63s"), pszError);
}
session.Close();
return false;
}
示例11: FillIpVec
BOOL CProxyIP::FillIpVec()
{
int i = 0;
for (i = 0; i < m_goalUrlVec.size(); i++)
{
CHttpFile* pHttpFile = (CHttpFile *)m_pSession->OpenURL(m_goalUrlVec[i].c_str());
DWORD dwStatusCode = 0;
pHttpFile->QueryInfoStatusCode(dwStatusCode);
if (dwStatusCode == HTTP_STATUS_OK)
{
BOOL bCheck = FALSE;
CString strData;
wstring subStr = _T("class=\"cont_ad\"");
while(pHttpFile->ReadString(strData))
{
TCHAR mainStr[MAX_STR_LEN] = {0};
ConvertMultiByteToWideChar((char *)strData.GetBuffer(), mainStr, MAX_STR_LEN);
wstring wMainStr = mainStr;
if (bCheck)
{
if (wMainStr.find(_T("</span>")) < wMainStr.length())
{
break;
}
TCHAR firstPosChar = wMainStr.at(0);
if (firstPosChar < 48 || firstPosChar > 57)
{
continue;
}
m_IpVec.push_back(wMainStr);
m_totalIp++;
}
if (wMainStr.find(subStr) < wMainStr.length())
{
bCheck = TRUE;
}
}
}
pHttpFile->Close();
delete pHttpFile;
}
return TRUE;
}
示例12: URLGetAsyncThread
static DWORD WINAPI URLGetAsyncThread( LPVOID lpParam )
{
URLGetAsyncData *data = (URLGetAsyncData *)lpParam;
if (!data->url.IsEmpty()) {
CInternetSession session;
try {
CHttpFile* pFile;
pFile = (CHttpFile*)session.OpenURL(data->url, NULL, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE);
if (pFile) {
pFile->QueryInfoStatusCode(data->statusCode);
CStringA buf;
char pBuf[256];
int i;
do {
i = pFile->Read(pBuf,255);
pBuf[i] = 0;
data->body.AppendFormat("%s",pBuf);
} while (i>0);
//--
pFile->QueryInfo(
HTTP_QUERY_RAW_HEADERS_CRLF,
data->headers
);
pFile->Close();
}
session.Close();
} catch (CInternetException *e) {
data->statusCode = 0;
}
}
if (data->message) {
SendMessage(data->hWnd,data->message,(WPARAM)data,0);
}
delete data;
return 0;
}
示例13: Download
BOOL CUpdateThread::Download( LPCTSTR lpszUrl, LPCTSTR lpszSavePath, ULONG uSize)
{
DWORD dwServiceType;
CString strServer;
CString strObject;
INTERNET_PORT nPort;
BOOL bResult = FALSE;
if (AfxParseURL(lpszUrl, dwServiceType, strServer, strObject, nPort))
{
CHttpConnection *conn = NULL;
CHttpFile *file = NULL;
UpdateSubProgress(0);
try
{
int flags = INTERNET_FLAG_EXISTING_CONNECT;
if (dwServiceType == AFX_INET_SERVICE_HTTPS)
{
flags |= INTERNET_FLAG_SECURE |
INTERNET_FLAG_IGNORE_CERT_CN_INVALID |
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID;
}
conn = m_Session.GetHttpConnection(strServer, nPort);
file = conn->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject, NULL, 1, NULL, NULL, flags);
file->SendRequest();
UpdateSubProgress(10);
DWORD dwStatus = 0;
file->QueryInfoStatusCode(dwStatus);
if (dwStatus == 200)
{
CFile localFile(lpszSavePath, CFile::modeReadWrite | CFile::shareExclusive | CFile::modeCreate);
char buf[512];
UINT nCount = 0;
ULONG uTotal = 0;
while ((nCount = file->Read(buf, 1)) > 0)
{
localFile.Write(buf, nCount);
uTotal += nCount;
if (uSize > 0)
UpdateSubProgress(10 + 90.0 * uTotal / uSize);
}
localFile.Close();
bResult = TRUE;
}
}
catch (CException *e)
{
e->ReportError();
e->Delete();
}
if (file)
{
file->Close();
delete file;
}
if (conn)
{
conn->Close();
delete conn;
}
UpdateSubProgress(100);
};
return bResult;
}
示例14: ConnectUrl
int CHttpRequest::ConnectUrl(TCHAR *sUrl, TCHAR *sReturn, long *lVersion, int *Count)
{
ODS(_T("XFILTER.EXE: GetFromUrl Begin... \n"));
if(sUrl == NULL)
return XERR_INVALID_PARAMETER;
CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
if (!AfxParseURL(sUrl, dwServiceType, strServerName, strObject, nPort) ||
dwServiceType != INTERNET_SERVICE_HTTP)
{
ODS(_T("XFILTER.EXE: Internet Invalid Url ..."));
return XERR_INTERNET_URL_ERROR;
}
CInternetSession session(GUI_APP_CLASS_NAME);
CHttpConnection *pServer = NULL;
CHttpFile *pFile = NULL;
int iRet = XERR_SUCCESS;
m_IsConnecting = TRUE;
try
{
pServer = session.GetHttpConnection(strServerName, nPort);
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, strObject);
pFile->AddRequestHeaders(szHeaders);
pFile->SendRequest();
DWORD dwRet;
pFile->QueryInfoStatusCode(dwRet);
if (dwRet >= 400 && dwRet <= 499)
{
ODS(_T("XFILTER.EXE: Internet Request Error ..."));
iRet = XERR_INTERNET_REQUEST_ERROR;
}
else if(dwRet >= 500 && dwRet <= 599)
{
ODS(_T("XFILTER.EXE: Internet Server Error ..."));
iRet = XERR_INTERNET_SERVER_ERROR;
}
else if(sReturn != NULL)
{
pFile->ReadString(sReturn, MAX_NET_COMMAND_LENTH - 1);
ODS(sReturn);
CString tmpStr = sReturn;
long lVer = atol(tmpStr.Left(MAX_NET_COMMAND_VERSION_LENTH));
if(lVer > *lVersion)
{
*lVersion = lVer;
int i = 1;
while (i < MAX_NET_COMMAND
&& pFile->ReadString((sReturn + MAX_NET_COMMAND_LENTH * i), MAX_NET_COMMAND_LENTH - 1))
{
ODS(sReturn + i * MAX_NET_COMMAND_LENTH);
i ++;
}
*Count = i;
}
else
{
*Count = 1;
}
}
else
{
CString sRet;
pFile->ReadString(sRet);
if(sRet.GetAt(0) != '1')
iRet = XERR_INTERNET_REG_ERROR;
ODS2(_T("XFILTER.EXE: Internet User Register Return Value "),sRet);
}
pFile->Close();
pServer->Close();
}
catch(CInternetException* pEx)
{
pEx->Delete();
iRet = XERR_INTERNET_CONNECT_ERROR;
ODS(_T("XFILTER.EXE: GetFromUrl XERR_INTERNET_CONNECT_ERROR... "));
}
if (pFile != NULL)
delete pFile;
if (pServer != NULL)
delete pServer;
session.Close();
m_IsConnecting = FALSE;
//.........这里部分代码省略.........
示例15: GetWebFile
//.........这里部分代码省略.........
//CInternetSession flags if we need them
//DWORD dwFlags = INTERNET_FLAG_ASYNC;
DWORD dwFlags = NULL;
//Proxy setting if we need them
LPCTSTR pstrProxyName = NULL;
LPCTSTR pstrProxyBypass = NULL;
CMyInternetSession session(pstrAgent, dwAccessType, pstrProxyName, pstrProxyBypass, dwFlags);
//Set any CInternetSession options we may need
int ntimeOut = 30;
session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,1000* ntimeOut);
session.SetOption(INTERNET_OPTION_CONNECT_BACKOFF,1000);
session.SetOption(INTERNET_OPTION_CONNECT_RETRIES,1);
//Enable or disable status callbacks
session.EnableStatusCallback(TRUE);
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
DWORD dwRet;
try {
pServer = session.GetHttpConnection(lpstrServer, usPort,
pstrUserName, pstrPassword);
pFile = pServer->OpenRequest(pstrVerb, strPathName, pstrReferer,
1, &pstrAcceptTypes, pstrVersion, dwHttpRequestFlags);
pFile->AddRequestHeaders(szHeaders);
pFile->AddRequestHeaders("User-Agent: GetWebFile/1.0\r\n", HTTP_ADDREQ_FLAG_ADD_IF_NEW);
pFile->SendRequest();
pFile->QueryInfoStatusCode(dwRet);//Check wininet.h for info
//about the status codes
if (dwRet == HTTP_STATUS_DENIED)
{
return dwRet;
}
if (dwRet == HTTP_STATUS_MOVED ||
dwRet == HTTP_STATUS_REDIRECT ||
dwRet == HTTP_STATUS_REDIRECT_METHOD)
{
CString strNewAddress;
//again check wininet.h for info on the query info codes
//there is alot one can do and re-act to based on these codes
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strNewAddress);
int nPos = strNewAddress.Find(_T("Location: "));
if (nPos == -1)
{
return 0;
}
strNewAddress = strNewAddress.Mid(nPos + 10);
nPos = strNewAddress.Find('\n');
if (nPos > 0)
strNewAddress = strNewAddress.Left(nPos);
pFile->Close();
delete pFile;
pServer->Close();
delete pServer;