利用Wininet SetOption设置代理

这是摘自msdn中的一个利用代理下载网络文件的例子。

CString   GeHttptFile(const   char   *url)  
  {  
  CString   szContent;  
  char   strProxyList[MAX_PATH],   strUsername[64],   strPassword[64];  
  //in   this   case   "proxya"   is   the   proxy   server   name,   "8080"   is   its   port  
  strcpy(strProxyList,   "proxya:8080");  
  strcpy(strUsername,   "myusername");  
  strcpy(strPassword,   "mypassword");  
  DWORD   dwServiceType   =   AFX_INET_SERVICE_HTTP;  
  CString   szServer,   szObject;  
  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   =   strProxyList;  
  proxyinfo.lpszProxyBypass   =   NULL;  
  mysession.SetOption(INTERNET_OPTION_PROXY,   (LPVOID)&proxyinfo,   sizeof(INTERNET_PROXY_INFO));  
  pHttpFile->SetOption(INTERNET_OPTION_PROXY_USERNAME,   strUsername,   strlen(strUsername)+1);  
  pHttpFile->SetOption(INTERNET_OPTION_PROXY_PASSWORD,   strPassword,   strlen(strPassword)+1);  
   
  pHttpFile->SendRequest(NULL);  
  DWORD   nFileSize   =   pHttpFile->GetLength();  
  LPSTR   rbuf   =   szContent.GetBuffer(nFileSize);  
  UINT   uBytesRead   =   pHttpFile->Read(rbuf,   nFileSize);  
  szContent.ReleaseBuffer();  
  pHttpFile->Close();  
  delete   pHttpFile;  
  pConnection->Close();  
  delete   pConnection;  
  mysession.Close();  
  return   szContent;  
  }

ASSERT(m_astrProxies.GetSize()>0);  
  CString   strProxy=m_astrProxies[m_iProxyIndex];  
  if(strProxy.IsEmpty())  
  {  
  INTERNET_PROXY_INFO   ipi;  
  ipi.dwAccessType=INTERNET_OPEN_TYPE_DIRECT;  
  ipi.lpszProxy=NULL;  
  ipi.lpszProxyBypass=NULL;   
  UrlMkSetSessionOption(INTERNET_OPTION_PROXY,&ipi,sizeof(ipi),0);  
  }  
  else  
  {  
  INTERNET_PROXY_INFO   ipi;  
  ipi.dwAccessType=INTERNET_OPEN_TYPE_PROXY;  
  ipi.lpszProxy=strProxy;  
  ipi.lpszProxyBypass=NULL;   
  UrlMkSetSessionOption(INTERNET_OPTION_PROXY,&ipi,sizeof(ipi),0);  
  }   

  SetOption(INTERNET_OPTION_PROXY_USERNAME,   (LPVOID)szID,   ::lstrlen(szID));  
  SetOption(INTERNET_OPTION_PROXY_PASSWORD,   (LPVOID)szPassword,   ::lstrlen(szPassword));  

转载于:https://www.cnblogs.com/hackpig/archive/2010/02/15/1668353.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值