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服务仍以其旺盛的生命力占据了网络应用的重要份额。在ZendFramework的服务类组件中就提供了Zend_Http组件,专门用于处理与HTTP相关的业务。Zend_Http组件包括Zend_Http_Client、Zend_Http_Cookie与Zend_Http_Response几个部分。其中,Zend_Http_Client在其中居于最重要的地位。本章就分别介绍有关Zend_Http组件的内容。,28.1Zend_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)newZend_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页面来说,通常其头部信息(Headerinformation)中包含有该页的一些主要相关信息。获取此信息会有助于了解该页面。下面依次讲解如何设置头部信息和获取已有的头部信息。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.2Zend_Http_Client高级用法,上一节介绍了Zend_Http_Client类的基本用法。除了上一节所介绍的各种使用方法之外,该类还有诸如:实现页面重定向、设置Cookie、实现文件上传以及HTTP认证等高级用法。本节将就这些高级用法分别向读者做进一步的讲解。,28.2.1HTTP重定向,默认情况下,Zend_Http_Client将会自动地处理HTTP重定向,并允许最多跟踪5次重定向。该值可以通过使用setConfig()方法修改$config的maxredirects选项进行设置(具体内容请参见28.1.4小节)。与HTTP/1.1RFC(RequestForComments请求注解)一致,HTTP301and302(永久转向与暂时转向)请求将会被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,$ctype=null),28.2.4HTTPAuth认证,目前的Zend_Http_Client只支持最基本的HTTP认证。通过Zend_Http_Client的setAuth()方法即可实现这样的功能。该方法的语法格式如以下代码所示。setAuth($user,$password=,$type=self:AUTH_BASIC),28.3Zend_Http_Client_Adapter连接器,目前ZendFramework中的Zend_Http_Client类提供了以下三种连接器。Zend_Http_Client_Adapter_SocketZend_Http_Client_Adapter_Proxy。Zend_Http_Client_Adapter_Test。,28.3.1Socket连接器,默认情况下,Zend_Http_Client将会使用Zend_Http_Client_Adapter_Socket连接器作为其默认的连接器。除非使用了setConfig()方法对其进行修改,否则将一直使用此连接器。该连接器基于PHP中的fsocketopen()函数,不需要其他特别的PHP扩展即可运行。,28.3.2Proxy连接器,Zend_Http_Client_Adapter_Proxy(代理)连接器与默认的Socket连接器十分类似。二者的不同在于代理连接器的连接是通过一个HTTP代理服务器进行;而Socket连接器则是直接连接到目标服务器。该连接器允许Zend_Http_Client通过代理服务器进行连接,这也是需要更高的安全性与执行的原因。,28.3.3Test连接器,Zend_Http_Client_Adapter_Test连接器提供了一个可选方法setResponse()。该方法的语法格式如以下代码所示。setResponse($response),28.3.4自定义连接器,Zend_Http_Client_Adapter提供了连接器接口类Zend_Http_Client_Adapter_Interface。这为用户创建自定义连接器提供了可能,用户只需要继承该接口即可创建自定义的连接器。,28.4Zend_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=null),28.5Zend_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

提交评论