HTTP服务(ZendHttp).ppt_第1页
HTTP服务(ZendHttp).ppt_第2页
HTTP服务(ZendHttp).ppt_第3页
HTTP服务(ZendHttp).ppt_第4页
HTTP服务(ZendHttp).ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第28章 HTTP服务务(Zend_Http) HTTP是出现时间最长,也是目前使用最为广泛的网络 应用服务之一。在互联网诞生时,HTTP就随之而来。随着 技术的发展,各种新的应用层出不穷,然而HTTP服务仍以 其旺盛的生命力占据了网络应用的重要份额。在Zend Framework的服务类组件中就提供了Zend_Http组件,专 门用于处理与HTTP相关的业务。Zend_Http组件包括 Zend_Http_Client、Zend_Http_Cookie与 Zend_Http_Response几个部分。其中, Zend_Http_Client在其中居于最重要的地位。本章就分别 介绍有关Zend_Http组件的内容。 28.1 Zend_Http_Client基本用法 Zend_Http_Client类是一个接口。该类为那些需要执 行HTTP请求的程序提供了方便。Zend_Http_Client可以执 行GET、POST、PUT和DELETE等基于HTTP的请求。本 节先来介绍Zend_Http_Client的最基本用法。 注意:默认情况下Zend_Http_Client将追踪5次HTTP 重定向。要改变这个行为,可以使用setConfig()方法(该 方法在28.1.4小节详细介绍)。 28.1.1 创创建Zend_Http_Client对对象 通过使用new关键字与类Zend_Http_Client的构造方 法,可以建立一个Zend_Http_Client对象。其构造方法的 语法格式如以下代码所示。 construct($uri=null, $config=null) new Zend_Http_Client($url,$config) 28.1.2 获获取与设设置URI 在创建一个Zend_Http_Client对象之后,可以通过对 象的getUri()方法来获取对象的URI。该方法的语法格式如 以下代码所示。 getUri($as_string=false) 另外,如果在创建Zend_Http_Client对象时没有指定 $uri参数,或者要改变对象的URI可以通过方法setUri()对其 进行设置。该方法的语法格式如以下代码所示。 setUri($uri) 28.1.3 设设置与获获取头头部信息 对一个HTTP页面来说,通常其头部信息(Header information)中包含有该页的一些主要相关信息。获取此 信息会有助于了解该页面。下面依次讲解如何设置头部信息 和获取已有的头部信息。 1设置头部信息 2获取头部信息 28.1.4 修改各项设项设 置 Zend_Http_Client对象有一个protected属性$config ,该属性为一个数组型变量。其中保存有与对象各种行为紧 密相关的配置。其内容有以下几项。 maxredirects: strictredirects: useragent: timeout: adapter: httpversion: keepalive: storeresponse: 28.1.5 执执行请请求并获获取内容 使用Zend_Http_Client对象执行请求并获取其内容, 可以按照以下步骤进行。 (1)创建一个Zend_Http_Client对象。 (2)执行该对象的request()方法返回一个 Zend_Http_Response对象。 (3)通过Zend_Http_Response的getBody()方法获 取页面内容。 28.2 Zend_Http_Client高级级用法 上一节介绍了Zend_Http_Client类的基本用法。除了 上一节所介绍的各种使用方法之外,该类还有诸如:实现页 面重定向、设置Cookie、实现文件上传以及HTTP认证等高 级用法。本节将就这些高级用法分别向读者做进一步的讲解 。 28.2.1 HTTP重定向 默认情况下,Zend_Http_Client将会自动地处理HTTP 重定向,并允许最多跟踪5次重定向。该值可以通过使用 setConfig()方法修改$config的maxredirects选项进行设置 (具体内容请参见28.1.4小节)。 与HTTP/1.1 RFC(Request For Comments请求注解 )一致,HTTP 301 and 302(永久转向与暂时转向)请求 将会被Client以相同的请求方法发送到指定的位置。但是很 多的Client并不这样执行,当页面重定向时它总是向新的地 址使用GET方法。默认情况下,Zend_Http_Client也这样 处理。当读取到301或者302转向的请求时,所有的GET和 POST参数都将被重置,而都以一个GET请求的形式被发送 到一个新的地址。该行为可以通过将$config数组的 strictredirects配置项设置为True来改变。 28.2.2 使用Cookie Zend_Http_Client类为请求中添加Cookie提供了一个 很简单的接口。因此,不需要为页面发送特别的头信息,只 需要执行setCookie()方法即可。该方法有多种调用方式, 不论何种方式均可以实现相同的功能,其语法格式如以下代 码所示。 setCookie($cookie,$value=null) 28.2.3 实现实现 文件上传传 通常情况下,要想实现文件上传,需要使用HTML中的 Form表单里的File表单项。而使用Zend_Http_Client的 setFileUpload()方法,也可以模拟实现文件上传的功能。该 方法的语法格式如以下代码所示。 setFileUpload($filename,$formname,$data=null,$c type = null) 28.2.4 HTTP Auth认证认证 目前的Zend_Http_Client只支持最基本的HTTP认证。 通过Zend_Http_Client的setAuth()方法即可实现这样的功 能。该方法的语法格式如以下代码所示。 setAuth($user,$password=,$type=self:AUTH_BA SIC) 28.3 Zend_Http_Client_Adapter连连接器 目前Zend Framework中的Zend_Http_Client类提供 了以下三种连接器。 Zend_Http_Client_Adapter_Socket Zend_Http_Client_Adapter_Proxy 。 Zend_Http_Client_Adapter_Test。 28.3.1 Socket连连接器 默认情况下,Zend_Http_Client将会使用 Zend_Http_Client_Adapter_Socket连接器作为其默认的 连接器。除非使用了setConfig()方法对其进行修改,否则 将一直使用此连接器。该连接器基于PHP中的 fsocketopen()函数,不需要其他特别的PHP扩展即可运行 。 28.3.2 Proxy连连接器 Zend_Http_Client_Adapter_Proxy(代理)连接器与 默认的Socket连接器十分类似。二者的不同在于代理连接 器的连接是通过一个HTTP代理服务器进行;而Socket连接 器则是直接连接到目标服务器。该连接器允许 Zend_Http_Client通过代理服务器进行连接,这也是需要 更高的安全性与执行的原因。 28.3.3 Test连连接器 Zend_Http_Client_Adapter_Test连接器提供了一个 可选方法setResponse()。该方法的语法格式如以下代 码所示。 setResponse($response) 28.3.4 自定义连义连 接器 Zend_Http_Client_Adapter提供了连接器接口类 Zend_Http_Client_Adapter_Interface。这为用户创建自 定义连接器提供了可能,用户只需要继承该接口即可创建自 定义的连接器。 28.4 Zend_Http_ Cookie 在使用Zend_Http_Client类进行setCookie()操作时, 需要使用到另一个Zend_Http子类Zend_Http_ Cookie。该 子类提供了对于Cookie的常规操作,其内容包括分析HTTP 响应字符串、收集Cookie信息以及访问Cookie的属性等。 本节就来介绍Zend_Http_Cookie的使用。 28.4.1 创创建实实例 要初始化一个Zend_Http_Cookie对象可以通过两种方 法来实现,第一种为使用类的构造方法;另一种为调用其静 态方法fromString()。下面就这两种不同的方法分别作介绍 。 1使用类的构造方法 2使用fromString()方法 28.4.2 获获取信息方法 在Zend_Http_Cookie中提供了这样一组方法用于实现 该类操作。这些方法包括如下几个。 getName()方法 getValue()方法 getDomain()方法 getPath()方法 getExpiryTime()方法 除了以上方法外,Zend_Http_Cookie还提供了几个判 断方法来判断Cookie的行为。该类判断方法有以下几个。 isSecure()方法 isExpired(int $time=null)方法 isSessionCookie()方法 28.4.3 匹配Cookie 使用Zend_Http_Cookie的math()方法可以对Cookie 是否与给定的事态相匹配做出判断,并以此判断是否发送 Cookie。该方法的语法格式如以下代码所示。 match($uri,$matchSessionCookies=true,$now=nu ll) 28.5 Zend_Http_Response Zend_Http_Response类是由Zend_Http_Client的 request()请求所返回的响应。该类可以提供简单的访问方 式,它提供一组方法用于访问返回的响应信息。这些方法有 如下几个。 isError()方法 isSuccessful()方法 isRedirect()方法 getStatus()方法 getMessage()方法 getHeaders()方法 getBody()方法 28.5.1 判断是否出错错并返回状态态 Zend_Http_Response的isError()方法用于判断响应 是否出错。如果出错将返回错误代码,反之则返回False。 28.5.2 判断是否成功 isSuccessful()方法与isError()方法正好相反。后者在 请求返回成功(返回状态码200,即状态为OK)时返回 False,而前者则在请求返回成功(返回状态码200,即状态 为OK)返回True。 28.5.3 返回头头部信息 Zend_Http_Response的getHeaders()方法用于获取 所返回的HTTP头信息,并赋值到一个数组中。合理使用该

温馨提示

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

最新文档

评论

0/150

提交评论