【学习课件】第9章__HTTP协议及高级编程_第1页
【学习课件】第9章__HTTP协议及高级编程_第2页
【学习课件】第9章__HTTP协议及高级编程_第3页
【学习课件】第9章__HTTP协议及高级编程_第4页
【学习课件】第9章__HTTP协议及高级编程_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章 HTTP协议及高级编程简要介绍HTTP协议。介绍MFC中的CHtmlView类。使用CHtmlView类,创建一个Web浏览器型的应用程序。 7/15/202219.1 HTTP协议 HTTP是超文本传输协议的简称,HTTP 协议也是基于TCP/IP的客户/服务器协议。 1990年,在万维网应用程序的开发中,为了解决HTML文档在网上的传输问题,诞生了 HTTP协议。至今已有了三个版本,HTTP0.9、1.0及1.1。为了适应下一代的因特网,还出现了 HTTPng。事实证明,HTTP比以前的任何一种协议都简单有效 ,能将信息很好地组织起来 ,让人们方便地、直接地从互联网上检索和获取所需

2、的信息。7/15/202229.1.1 HTTP的基本概念 RFC2068是HTTP1.1的最新的详细描述,本节介绍HTTP的基本概念。图9.1 HTTP的会话过程 7/15/20223 HTTP的会话周期由连接、请求、响应和断开4个阶段组成:建立TCP/IP连接Web客户向服务器发送HTTP请求服务器向客户回送HTTP响应断开TCP/IP连接7/15/20224 HTTP协议就是规定了Web客户和服务器之间的信息交换规程,以及 HTTP请求和HTTP响应消息的内容和格式。 HTTP协议应在 Web浏览器和Web服务器中实现。换句话说,Web浏览器和Web服务器应按照 HTTP协议交换信息。

3、至于 HTTP消息的一般格式等具体细节,读者可查阅相关资料。 7/15/202259.1.2 HTTP协议的应用 HTTP协议对编程有什么用?能够实现什么样实用的程序?这些问题使我们不得不回到HTTP的本质。超文本传输协议 ,主要是用于传输文件的协议 。虽然RFC2068 对HTTP协议描述超出了文件传输的范围。但是传输文件的作用还是最主要的。7/15/20226 在这里我们提出几个问题,这些问题都可以使用HTTP协议编程实现。比如 :基于HTTP的文件断点续传的程序使用代理服务器下载的程序Web服务器程序能够通过身份认证而下载文件的程序接受浏览器网页上载文件的程序这些功能的实现都要求用户对H

4、TTP比较了解。 7/15/202279.2 利用CHtmlView类创建Web浏览器型的应用程序7/15/202289.2.1 CHtmlView类与WebBrowser控件 CHtmlView类在afxhtml.h 包含文件中定义,是从CView派生的,如图9.2所示。在标准的MFC框架应用程序中,无论是基于SDI或MDI的,所有从CView派生的类,都提供了由CView提供的功能。7/15/20229图9.2 CHtmlView类的继承关系 7/15/202210 CHtmlView类的主要功能是访问Web网站和HTML文档。这是由于CHtmlView类在MFC的文档/视图结构环境中 ,

5、进一步提供了WebBrowser控件的功能,可以说CHtmlView类是对WebBrowser控件的封装。 WebBrowser 控件支持通过超链接和统一资源定位器URL导航的Web浏览。 使得应用程序成了一个Web浏览器。 要创建一个Web浏览器型的应用程序,可以使用CHtmlView类。通过MFC应用程序向导实现。 7/15/2022119.2.2 CHtmlView 类的成员函数1获取和设置属性的成员函数CString GetType( ) const;long GetLeft( ) const;void SetLeft( long nNewValue );long GetTop( )

6、const;void SetTop( long nNewValue );long GetHeight( ) const; void SetHeight( long nNewValue ); BOOL GetVisible( ) const;void SetVisible( BOOL bNewValue ); 其它的函数就不一一列举了。7/15/2022122主要的操作成员函数(很有用)void GoBack( ); 导航到历史列表的前一个条目void GoForward( );导航到历史列表的下一个条目void GoHome( );导航到主页,该主页在IE的属性中设置void GoSearch

7、( );导航到当前搜索页。该页在IE的属性中设置void Refresh( );重新装入浏览器当前正在显示的URL或者文件,即刷新。void Stop( );撤销任何未完成的导航或下载,并且停止任何动态的页面元素,例如背景音乐和动画。7/15/202213Navigate 导航到由URL指定的资源。Navigate2 导航到由URL指定的资源或者文件PutProperty 设置与给定的对象相关的属性的当前值GetProperty 返回与所给定的对象相关的属性的当前值ExecWB 执行一个命令LoadFromResource 在WebBrowser控件中装入一个资源7/15/202214第一种格

8、式的导航函数 调用这个成员函数,导航到由URL指定的资源,或者由一个完全的路径指定的文件。void Navigate( LPCTSTR URL, DWORD dwFlags = 0,LPCTSTR lpszTargetFrameName = NULL, LPCTSTR lpszHeaders = NULL, LPVOID lpvPostData = NULL, DWORD dwPostDataLen = 0 ); 7/15/202215第二种格式的导航函数Navigate2 此成员函数导航到由URL指定的资源,或者由一个完全的路径指定的文件 。函数通过支持特定文件夹的浏览,诸如,Desktop

9、 和 My Computer ,扩展了Navigate成员函数的功能,它们由参数pIDL 指定。函数有三种重载的形式,参数有所不同。void Navigate2(LPITEMIDLIST pIDL,DWORD dwFlags = 0,LPCTSTR lpszTargetFrameName = NULL );7/15/202216void Navigate2(LPCTSTR lpszURL,DWORD dwFlags = 0,LPCTSTR lpszTargetFrameName = NULL,LPCTSTR lpszHeaders = NULL,LPVOID lpvPostData = NUL

10、L, DWORD dwPostDataLen = 0 ); 7/15/202217void Navigate2(LPCTSTR lpszURL,DWORD dwFlags,CByteArray& baPostedData,LPCTSTR lpszTargetFrameName = NULL, LPCTSTR lpszHeader = NULL ); 7/15/202218设置属性的成员函数设置给定对象相关的属性。有多种重载的形式:void PutProperty( LPCTSTR lpszProperty, const VARIANT& vtValue );void PutProperty(

11、LPCTSTR lpszPropertyName, double dValue );void PutProperty( LPCTSTR lpszPropertyName, long lValue );void PutProperty( LPCTSTR lpszPropertyName, LPCTSTR lpszValue );void PutProperty( LPCTSTR lpszPropertyName, short nValue ); 7/15/202219获得属性得到与控件相关的属性值,两种重载形式:BOOL GetProperty(LPCTSTR lpszProperty,CStr

12、ing& strValue );COleVariant GetProperty( LPCTSTR lpsz ); 前者返回非零,表示成功完成,否则返回0,后者返回COleVariant对象。7/15/202220执行命令ExecWB 调用这个成员函数来在浏览器控件中或IE中执行一个命令。void ExecWB(OLECMDID cmdID, OLECMDEXECOPT cmdexecopt, VARIANT* pvaIn, VARIANT* pvaOut ); 7/15/202221装入资源 调用此成员函数来将指定的资源装入浏览器控件,有两种形式。BOOL LoadFromResource(

13、LPCTSTR lpszResource );BOOL LoadFromResource( UINT nRes );7/15/2022223事件(Events)处理函数 为了利用Windows的消息驱动机制,CHtmlView 类定义了许多可重载的事件处理函数,当一定的事件发生时 ,MFC框架会自动调用相应的事件处理函数。用户可以重载这些函数,添加自己的代码,实现应用程序特定的功能。常用函数:OnNavigateComplete2:对于一个窗口或显示框架,完成到一个超链接的导航后,调用此函数OnBeforeNavigate2:对于一个窗口或显示框架,在给定的Web浏览器中,一个导航出现之前,调

14、用此函数 7/15/202223virtual void OnStatusTextChange( LPCTSTR lpszText ); 当与WebBrowser 控件相关的状态栏的文本改变时,调用此函数,参数lpszText 包含新的状态栏文本的字符串。virtual void OnVisible( BOOL bVisible ); 当WebBrowser 的窗口应当被显示或隐藏时,框架调用此函数,bVisible 表示了窗口的状态,如果为非零,对象可见;为零,对象不可见。 7/15/202224virtual void OnToolBar( BOOL bToolBar ); 当 ToolBar 属性已经改变时,调用此函数,bToolBar为非零, IE的工具栏是可见的;否则相反。virtual void OnMenuBar( BOOL bMenuBar ); 当 MenuBar 属性已改变时,调用此函数。bMenuBar为非零,菜单栏可见;否则相反。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论