通過Proxy 伺服器下載網頁

來源:互聯網
上載者:User

#include <afxinet.h>
#pragma comment(lib, "Wininet.lib")

//-----------------------------------------------------------------------------
//   網頁下載
//IN : strDownText 下載後網頁的源碼文本,strUrl 網頁的連結地址
//OUT : 
//RETURN: 成功返回TRUE,失敗返回FALSE
//AUTHOR: 2005-8-8 Created by yangdz
//NOTE : 
//-----------------------------------------------------------------------------
BOOL DownHttp(CString& strDownText, const char* url)
{
 char strProxyList[MAX_PATH], strUsername[64], strPassword[64];
 //in this case "proxya" is the proxy server name, "8080" is its port
 strcpy(strProxyList, "203.55.231.107:8080"); //Proxy 伺服器地址
 strcpy(strUsername, ""); //使用者名稱
 strcpy(strPassword, ""); //密碼
 
 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 = strDownText.GetBuffer(nFileSize);
 UINT uBytesRead = pHttpFile->Read(rbuf, nFileSize);
 strDownText.ReleaseBuffer();
 pHttpFile->Close();
 delete pHttpFile;
 pConnection->Close();
 delete pConnection;
 mysession.Close();
 
 return TRUE;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.