一个从网上下载文件的类

发表于:2007-07-01来源:作者:点击数: 标签:
CWebGrab类使您能够快速简洁的从网上下载文件。它支持所有MFC类支持的协议。 这个类使用起来很简单,你只需要调用一个主函数CWebGrab::GetFile。这个函数的语法是: BOOL GetFile(LPCTSTR szURL, CString strBuffer, LPCTSTR szAgentName = NULL, CWnd* pWnd




CWebGrab类使您能够快速简洁的从网上下载文件。它支持所有MFC类支持的协议。
这个类使用起来很简单,你只需要调用一个主函数CWebGrab::GetFile。这个函数的语法是:
BOOL GetFile(LPCTSTR szURL, CString& strBuffer,
LPCTSTR szAgentName = NULL, CWnd* pWnd = NULL);

szURL--URL路径 。
strBuffer--是接受下载文件的字符串缓冲。
szAgentName--是你的代理服务器名称(可以是NULL)。
pWnd--是一个状态窗口,它的状态可以用函数SetWindowText()改变。


BOOL GetFileInfo(LPCTSTR szURL, CString& strLastModified, DWORD& dwSize,
DWORD& dwServerError, LPCTSTR szAgentName = NULL,
CWnd* pWnd = NULL);
得到给定URL地址的文件的信息。

szURL--URL路径 。
strLastModified--保存指定文件的最后修改日期的字符串缓冲。
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/sec)。

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 ")
}
}


原文转自:http://www.ltesting.net