UrlMkSetSessionOption 可以设定代理,但是如果代理服务器设定了密码,如何控制?

解决方案 »

  1.   

    //Download   http   file   through   proxy   
      //--------------------------------------------------------------------------------   
      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;   
      }   
      

  2.   

    我的意思是
    如何给基于chtmlview的浏览器来设定代理
      

  3.   

    代理服务器 很复杂, 看看这个控件先 http://www.languangav.com/soft/product_down.htm