CInternetSession构造函数怎样设参数来用代理服务器?

楼主hjcy_2002(hjcy)2003-11-08 17:22:41 在 VC/MFC / 基础类 提问

CInternetSession构造函数怎样设参数来用代理服务器?  
  救命啊 问题点数:0、回复次数:2Top

1 楼2934046(wy520)回复于 2003-11-12 16:37:39 得分 0

We   can   find   details   about   Proxy   Authentication   and   Sever   Authentication   methed   in   MSDN.    
  Just   search   for   the   keyword   "INTERNET_OPTION_USERNAME".  
  Here   I   give   a   very   simple   example.   It   works   in   my   project.  
   
  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;  
  }  
   
  Top

2 楼arvid_gs(west)回复于 2003-11-12 16:48:43 得分 0

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;  
   
  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));  
  Top

你可能对以下的问题也比较感兴趣....