可参考如下代码
//Download http file through proxy
CString GeHttptFile(CString sUrl)
{
CString sContent;
char sProxyList[MAX_PATH], sUsername[64], sPassword[64];
//in this case "proxya" is the proxy server name, "8080" is its port
strcpy(sProxyList, "proxya:8080");
strcpy(sUsername, "myusername");
strcpy(strPassword, "mypassword");
DWORD dwServiceType = AFX_INET_SERVICE_HTTP;
CString sServer, sObject;
INTERNET_PORT nPort;
AfxParseURL(url, dwServiceType, szServer, szObject, nPort);
CInternetSession mysession;
CHttpConnection* pConnection;
CHttpFile* pHttpFile;
pConnection = mysession.GetHttpConnection(szServer, INTERNET_FLAG_KEEP_CONNECTION, INTERNET_INVALID_PORT_NUMBER, NULL, NULL);
pHttpFile = pConnection->OpenRequest("GET", szObject, NULL, 0, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION);
//here for proxy
INTERNET_PROXY_INFO proxyinfo;
proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
proxyinfo.lpszProxy = sProxyList;
proxyinfo.lpszProxyBypass = NULL;
mysession.SetOption(INTERNET_OPTION_PROXY, (LPVOID)&proxyinfo, sizeof(INTERNET_PROXY_INFO));
pHttpFile->SetOption(INTERNET_OPTION_PROXY_USERNAME, sUsername, strlen(sUsername)+1);
pHttpFile->SetOption(INTERNET_OPTION_PROXY_PASSWORD, sPassword, strlen(sPassword)+1);
pHttpFile->SendRequest(NULL);
DWORD nFileSize = pHttpFile->GetLength();
LPSTR rbuf = sContent.GetBuffer(nFileSize);
UINT uBytesRead = pHttpFile->Read(rbuf, nFileSize);
sContent.ReleaseBuffer();
pHttpFile->Close();
delete pHttpFile;
pConnection->Close();
delete pConnection;
mysession.Close();
return sContent;
}
本文提供了一段使用C++编写的代码示例,演示了如何通过指定的代理服务器(包括用户名和密码验证)来下载HTTP文件。代码详细展示了从解析URL到设置代理信息并最终完成文件下载的全过程。
569

被折叠的 条评论
为什么被折叠?



