通过代理服务器下载网页

#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"); //代理服务器地址
 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;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值