65.9K
CodeProject 正在变化。 阅读更多。
Home

用于从网络下载文件的类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.90/5 (28投票s)

1999年12月13日

CPOL
viewsIcon

431095

downloadIcon

8774

一个简单的类,可以简化从网络下载文件的任务。

Sample Image - WebGrab.gif

CWebGrab 是一个简单的类,允许您快速轻松地从网络下载文件。 该类只是 MFC Internet 类的轻量级封装,因此支持 MFC 类支持的任何协议。

该类非常易于使用,并且只有一个主要函数需要调用:CWebGrab::GetFile。 语法如下:

BOOL GetFile(LPCTSTR szURL, CString& strBuffer, 
             LPCTSTR szAgentName = NULL, CWnd* pWnd = NULL);

从给定的 URL 下载文件

  • szURL 是 URL
  • strBuffer 是一个 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 是 URL
  • strLastModified 是一个 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

© . All rights reserved.