通過Proxy訪問http檔案

來源:互聯網
上載者:User

 可參考如下代碼

//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;

}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.