梅芳-网络编程实用教程-第8章.ppt
《梅芳-网络编程实用教程-第8章.ppt》由会员分享,可在线阅读,更多相关《梅芳-网络编程实用教程-第8章.ppt(67页珍藏版)》请在三一办公上搜索。
1、第8章 HTTP协议及高级编程 简要介绍HTTP协议。介绍MFC中的CHtmlView类。使用CHtmlView类,创建一个Web浏览器型的应用程序。,8.1 HTTP协议 HTTP是超文本传输协议(Hypertext Transfer Protocol)的简称,HTTP协议也是基于TCP/IP的客户/服务器协议。1990年,在万维网应用的开发中,为了解决HTML文档在网上的传输问题,诞生了HTTP协议。至今已有了三个版本,HTTP0.9,HTTP1.0以及HTTP1.1。为了适应下一代的因特网,还出现了HTTPng。事实证明,HTTP比以前的任何一种协议都简单有效,能将信息很好地组织起来,让
2、人们方便地、直接地从Internet上检索和获取所需的信息。,8.1.1 HTTP的基本概念 RFC2068是HTTP1.1的最新的详细描述,本节介绍HTTP的基本概念。,图8.1 HTTP的会话过程,HTTP的会话周期由连接、请求、响应和断开4个阶段组成:(1)建立TCP/IP连接(TCP/IP connection)(2)Web客户向服务器发送HTTP请求(HTTP request)(3)服务器向客户回送HTTP响应(HTTP response)(4)断开TCP/IP连接(disconnection),HTTP协议就是规定了Web客户和服务器之间的信息交换规程,以及HTTP请求和HTTP响
3、应消息的内容和格式。HTTP协议应在Web浏览器和Web服务器中实现。换句话说,Web浏览器和Web服务器应按照HTTP协议交换信息。,8.1.2 HTTP协议的应用 HTTP协议对编程有什么用?能够实现什么样实用的程序?这些问题使我们不得不回到HTTP的本质。超文本传输协议,主要是用于传输文件的协议。虽然RFC2068对HTTP协议描述早就超出了文件传输的范围。但是传输文件的作用还是最主要的。在这里我们提出几个问题,这些问题都可以使用HTTP协议编程实现。比如:,基于HTTP的文件断点续传的程序使用代理服务器下载的程序 Web服务器程序能够通过身份认证而下载文件的程序 接受浏览器网页上载文件
4、的程序 这些功能的实现都要求用户对HTTP比较了解。,8.2 利用CHtmlView类创建Web浏览器型的应用程序8.2.1 CHtmlView类与WebBrowser控件 CHtmlView类在afxhtml.h包含文件中定义,是从CView派生的,如图8.2所示。在标准的MFC框架应用程序中,无论是基于SDI或MDI的,所有从CView派生的类,都提供了由CView提供的功能。,图8.2 CHtmlView类的继承关系,CHtmlView类的主要功能是访问Web网站和HTML文档。这是由于CHtmlView类在MFC的文档/视图结构(MFCs document/view architect
5、ure)环境中,进一步提供了WebBrowser控件的功能,可以说CHtmlView类是对WebBrowser控件的封装。WebBrowser控件支持通过超链接和统一资源定位器URL导航的Web浏览。CHtmlView提供的WebBrowser 使得应用程序成了一个Web浏览器(web browser)。要创建一个Web浏览器型的应用程序,可以使用CHtmlView类。通过MFC应用程序向导实现。,8.2.2 CHtmlView 类的成员函数1获取和设置属性(Attributes)的成员函数(1)CString GetType()const;返回浏览器包含的文档类型名字符串(2)long Ge
6、tLeft()const;返回浏览器左边界据屏幕左边缘的象素值 void SetLeft(long nNewValue);设置浏览器左边界的象素值(3)long GetTop()const;返回浏览器上边界据屏幕上边缘的象素值 void SetTop(long nNewValue);设置浏览器上边界的象素值,(4)long GetHeight()const;返回浏览器高度的象素值 void SetHeight(long nNewValue);设置IE窗口的象素值(5)BOOL GetVisible()const;获取对象是否可见,0表示隐藏,非0可见 void SetVisible(BOOL
7、bNewValue);设置对象是否可见(6)BOOL GetOffline()const;返回浏览器的操作是离线还是在线 void SetOffline(BOOL bNewValue);设置浏览器的离线或在线的操作方式,(7)CString GetLocationName()const;返回浏览器中显示的资源的名字(8)BOOL GetSilent()const;获取在浏览器中是否显示对话框,返回0表示显示 void SetSilent(BOOL bNewValue);设置在浏览器中是否显示对话框,默认为0(9)BOOL GetTopLevelContainer()const;获当前取对象是否
8、为顶级容器,非0为顶级 BOOL GetLocationURL()const;获取当前浏览器中的资源的URL串 其它的函数就不一一列举了,2主要的操作(Operations)成员函数这些成员函数非常有用,常常用在应用程序中。void GoBack();导航到历史列表的前一个条目(previous item)。void GoForward();导航到历史列表的下一个条目。void GoHome();导航到主页,该主页在IE的属性中设置。void GoSearch();导航到当前搜索页。该页在IE的属性中设置。void Refresh();重新装入浏览器当前正在显示的URL或者文件,即刷新。voi
9、d Stop();撤销任何未完成的导航或下载,并且停止任何动态的页面元素,例如背景音乐和动画。,Navigate 导航到由URL指定的资源。Navigate2 导航到由URL指定的资源或者由全路径指定的文件。PutProperty 设置与所给定的对象相关属性的当前值GetProperty 返回与所给定的对象相关属性的当前值ExecWB 执行一个命令。LoadFromResource 在WebBrowser控件中装入一个资源。后面的六个函数的调用格式比较复杂,下面分别叙述,(1)第一种格式的导航函数调用这个成员函数,导航到由URL指定的资源,或者由一个完全的路径指定的文件。void Naviga
10、te(LPCTSTR URL,DWORD dwFlags=0,LPCTSTR lpszTargetFrameName=NULL,LPCTSTR lpszHeaders=NULL,LPVOID lpvPostData=NULL,DWORD dwPostDataLen=0);,(2)第二种格式的导航函数Navigate2 导航到由URL指定的资源,或者由一个完全的路径指定的文件。函数通过支持特定文件夹的浏览,诸如,Desktop 和 My Computer,扩展了Navigate成员函数的功能,它们由参数pIDL指定。函数有三种重载的形式,参数有所不同。void Navigate2(LPITEMI
11、DLIST pIDL,DWORD dwFlags=0,LPCTSTR lpszTargetFrameName=NULL);,void Navigate2(LPCTSTR lpszURL,DWORD dwFlags=0,LPCTSTR lpszTargetFrameName=NULL,LPCTSTR lpszHeaders=NULL,LPVOID lpvPostData=NULL,DWORD dwPostDataLen=0);,void Navigate2(LPCTSTR lpszURL,DWORD dwFlags,CByteArray,(3)设置属性的成员函数设置一个给定对象相关的属性。有多种
12、重载的形式,参数不同。void PutProperty(LPCTSTR lpszProperty,const VARIANT,(4)获得属性得到与控件相关的属性值,有两种重载的形式。BOOL GetProperty(LPCTSTR lpszProperty,CString 前者返回非零,表示成功完成,否则返回0,后者返回COleVariant对象。,(5)执行命令ExecWB 调用这个成员函数来在浏览器控件中或IE中执行一个命令。void ExecWB(OLECMDID cmdID,OLECMDEXECOPT cmdexecopt,VARIANT*pvaIn,VARIANT*pvaOut);,
13、(6)装入资源 调用此成员函数来将指定的资源装入浏览器控件,有两种形式。BOOL LoadFromResource(LPCTSTR lpszResource);BOOL LoadFromResource(UINT nRes);,3事件(Events)处理函数 为了利用Windows的消息驱动机制,CHtmlView 类定义了许多可重载的事件处理函数,当一定的事件发生时,MFC框架会自动调用相应的事件处理函数。用户可以重载这些函数,添加自己的代码,实现应用程序特定的功能。下面列举了一些,详细的资料可查阅MSDN文档。OnNavigateComplete2 对于一个窗口或显示框架,完成到一个超链接
14、的导航后,调用此函数 OnBeforeNavigate2 对于一个窗口或显示框架,在给定的Web浏览器中,一个导航出现之前,调用此函数,virtual void OnStatusTextChange(LPCTSTR lpszText);当与WebBrowser 控件相关的状态栏的文本改变时,调用此函数,参数lpszText包含新的状态栏文本的字符串。virtual void OnVisible(BOOL bVisible);当WebBrowser 的窗口应当被显示或隐藏时,框架调用此函数,bVisible表示了窗口的状态,:如果为非零,对象可见;为零,对象不可见。,virtual void O
15、nToolBar(BOOL bToolBar);当 ToolBar 属性已经改变时,调用此函数,bToolBar为非零,IE的工具栏是可见的;否则相反。virtual void OnMenuBar(BOOL bMenuBar);当 MenuBar 属性已改变时,调用此函数。bMenuBar为非零,菜单栏可见;否则相反。,8.2.3 创建一个Web浏览器型的应用程序的一般步骤1利用MFC AppWizard创建SDI或MDI应用程序 前几章创建的都是基于对话框的程序,Web浏览器型的应用程序一般是单文档或多文档的程序。利用MFC应用程序向导创建SDI或MDI应用程序需要经过6步,你可以回到前一步
16、或进到后一步来改变你已经选择过的选项。在每一步,对每一个选项都可以得到帮助,右击控件,可以得到关于每个选项控件的信息。,在VC+集成开发环境中点菜单File/New.,出现新工程对话框,如图8.3。,图8.3 创建新工程的对话框,选择MFC AppWizard.exe类型的工程,输入工程的名字,决定工程文件存放的位置,然后点击OK按钮,出现第一步对话框。如图8.4。(1)第一步:选择应用程序结构,图8.4 第一步:选择应用程序结构,为应用程序选择三种结构之一,单文档(Single Document SDI),多文档(Multiple Document MDI),基于对话框(Dialog Bas
17、ed)。Web浏览器型的应用程序一般选择SDI类型,以下的操作都假定选择了SDI类型。决定应用程序是否要支持MFC的文档/视图结构(document/view architecture),实际你必须选择支持,因为不支持文档/视图结构的应用程序不能打开磁盘文件和从CWnd类继承的窗口区,并且后面的步骤都是无效的。选择资源中的文本所使用的语言,应选择“中文中国”。,作完这三件事以后,点击Next按钮,出现第二步对话框。如图8.5。(2)第二步:选择应用程序支持的数据库,图8.5 第二步:选择应用程序支持的数据库,为程序选择一种数据库支持,有四个选项。没有(None),头文件支持(Header fi
18、le support),带有文件支持的数据库视图(Database View with file support)或没有文件支持的数据库视图(Database View without file support)。如果选择了数据库支持,点击数据源(Data Source),在外部ODBC数据库、DAO数据库和OLE DB数据库中选择一个,然后选择相应的数据源和数据库表选项。点击Next按钮,出现第三步对话框,如图8.6。,(3)第三步:选择应用程序支持的复合文档,图8.6 选择应用程序支持的复合文档,选择应用程序支持的复合文档(compound document)类型。有五个选项:None:不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 梅芳 网络 编程 实用教程

链接地址:https://www.31ppt.com/p-6052152.html