可参考如下代码
//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;
}