用于从网络下载文件的类






4.90/5 (28投票s)
一个简单的类,可以简化从网络下载文件的任务。
CWebGrab
是一个简单的类,允许您快速轻松地从网络下载文件。 该类只是 MFC Internet 类的轻量级封装,因此支持 MFC 类支持的任何协议。
该类非常易于使用,并且只有一个主要函数需要调用:CWebGrab::GetFile
。 语法如下:
BOOL GetFile(LPCTSTR szURL, CString& strBuffer, LPCTSTR szAgentName = NULL, CWnd* pWnd = NULL);
从给定的 URL 下载文件
szURL
是 URLstrBuffer
是一个CString
缓冲区,将保存下载文件的内容szAgentName
是您想要发送到网站的代理名称(可以为 NULL)pWnd
是一个状态窗口。 状态更新将使用SetWindowText()
发送到此窗口
BOOL GetFileInfo(LPCTSTR szURL, CString& strLastModified, DWORD& dwSize, DWORD& dwServerError, LPCTSTR szAgentName = NULL, CWnd* pWnd = NULL);
(由 Ravi Bhavnani 添加)从给定的 URL 检索文件信息
szURL
是 URLstrLastModified
是一个CString
缓冲区,将保存文件的最后修改日期dwServerError
将返回引发的任何错误代码。szAgentName
是您想要发送到网站的代理名称(可以为 NULL)pWnd
是一个状态窗口。 状态更新将使用SetWindowText()
发送到此窗口
Bryce Burrows 友善地更新了代码,以包含以下函数
void SetUseProxy(bool use);
设置是否使用代理
void SetProxyServer(LPCSTR server);
设置代理服务器
void SetProxyPort(UINT port);
设置代理端口
void SetProxy(LPCSTR proxy, WORD port, bool use=true);
一次性设置代理信息
void SetForceReload (bool bForceReload)
设置在下载文档时是否强制重新加载。 如果设置了强制重新加载,则文档将不会是缓存版本。
void GetForceReload()
获取在下载文档时是否强制重新加载。
void SetTimeOut(DWORD timeOut);
设置操作的超时时间
double GetRate();
检索下载速率,单位为 Kb/秒
SHORT GetErrorCode(); CString GetErrorMessage();
获取错误代码和消息(如果有)
使用示例
#include "webgrab.h" void CWebGrabberDlg::OnDownload() { CString strBuffer; CWebGrab grab; if (grab.GetFile("http://www.mysite.com/index.htm", // the url strBuffer, // buffer for data _T("WebGrab demo"), // agent name GetDlgItem(IDC_STATUS))) // Plain ol' CStatic window { TRACE0("everything went OK\n") } }
历史
2002 年 1 月 26 日 - Bryce Burrows 友善地添加了代理代码。
2002 年 2 月 16 日 - Bryce Burrows 源代码更新。
2002 年 3 月 2 日 - Ravi Bhavnani 添加了一个“强制重新加载”选项,以确保下载的数据不是从缓存中读取的,以及 Get/SetForceReload()
函数。
2002 年 4 月 17 日 - Ravi Bhavnani 添加了一个 GetFileInfo