通过Proxy访问http文件

 可参考如下代码

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

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值