




已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第28章HTTP服務(wù)(Zend_Http),HTTP是出現(xiàn)時(shí)間最長(zhǎng),也是目前使用最為廣泛的網(wǎng)絡(luò)應(yīng)用服務(wù)之一。在互聯(lián)網(wǎng)誕生時(shí),HTTP就隨之而來(lái)。隨著技術(shù)的發(fā)展,各種新的應(yīng)用層出不窮,然而HTTP服務(wù)仍以其旺盛的生命力占據(jù)了網(wǎng)絡(luò)應(yīng)用的重要份額。在ZendFramework的服務(wù)類組件中就提供了Zend_Http組件,專門(mén)用于處理與HTTP相關(guān)的業(yè)務(wù)。Zend_Http組件包括Zend_Http_Client、Zend_Http_Cookie與Zend_Http_Response幾個(gè)部分。其中,Zend_Http_Client在其中居于最重要的地位。本章就分別介紹有關(guān)Zend_Http組件的內(nèi)容。,28.1Zend_Http_Client基本用法,Zend_Http_Client類是一個(gè)接口。該類為那些需要執(zhí)行HTTP請(qǐng)求的程序提供了方便。Zend_Http_Client可以執(zhí)行GET、POST、PUT和DELETE等基于HTTP的請(qǐng)求。本節(jié)先來(lái)介紹Zend_Http_Client的最基本用法。注意:默認(rèn)情況下Zend_Http_Client將追蹤5次HTTP重定向。要改變這個(gè)行為,可以使用setConfig()方法(該方法在28.1.4小節(jié)詳細(xì)介紹)。,28.1.1創(chuàng)建Zend_Http_Client對(duì)象,通過(guò)使用new關(guān)鍵字與類Zend_Http_Client的構(gòu)造方法,可以建立一個(gè)Zend_Http_Client對(duì)象。其構(gòu)造方法的語(yǔ)法格式如以下代碼所示。construct($uri=null,$config=null)newZend_Http_Client($url,$config),28.1.2獲取與設(shè)置URI,在創(chuàng)建一個(gè)Zend_Http_Client對(duì)象之后,可以通過(guò)對(duì)象的getUri()方法來(lái)獲取對(duì)象的URI。該方法的語(yǔ)法格式如以下代碼所示。getUri($as_string=false)另外,如果在創(chuàng)建Zend_Http_Client對(duì)象時(shí)沒(méi)有指定$uri參數(shù),或者要改變對(duì)象的URI可以通過(guò)方法setUri()對(duì)其進(jìn)行設(shè)置。該方法的語(yǔ)法格式如以下代碼所示。setUri($uri),28.1.3設(shè)置與獲取頭部信息,對(duì)一個(gè)HTTP頁(yè)面來(lái)說(shuō),通常其頭部信息(Headerinformation)中包含有該頁(yè)的一些主要相關(guān)信息。獲取此信息會(huì)有助于了解該頁(yè)面。下面依次講解如何設(shè)置頭部信息和獲取已有的頭部信息。1設(shè)置頭部信息2獲取頭部信息,28.1.4修改各項(xiàng)設(shè)置,Zend_Http_Client對(duì)象有一個(gè)protected屬性$config,該屬性為一個(gè)數(shù)組型變量。其中保存有與對(duì)象各種行為緊密相關(guān)的配置。其內(nèi)容有以下幾項(xiàng)。maxredirects:strictredirects:useragent:timeout:adapter:httpversion:keepalive:storeresponse:,28.1.5執(zhí)行請(qǐng)求并獲取內(nèi)容,使用Zend_Http_Client對(duì)象執(zhí)行請(qǐng)求并獲取其內(nèi)容,可以按照以下步驟進(jìn)行。(1)創(chuàng)建一個(gè)Zend_Http_Client對(duì)象。(2)執(zhí)行該對(duì)象的request()方法返回一個(gè)Zend_Http_Response對(duì)象。(3)通過(guò)Zend_Http_Response的getBody()方法獲取頁(yè)面內(nèi)容。,28.2Zend_Http_Client高級(jí)用法,上一節(jié)介紹了Zend_Http_Client類的基本用法。除了上一節(jié)所介紹的各種使用方法之外,該類還有諸如:實(shí)現(xiàn)頁(yè)面重定向、設(shè)置Cookie、實(shí)現(xiàn)文件上傳以及HTTP認(rèn)證等高級(jí)用法。本節(jié)將就這些高級(jí)用法分別向讀者做進(jìn)一步的講解。,28.2.1HTTP重定向,默認(rèn)情況下,Zend_Http_Client將會(huì)自動(dòng)地處理HTTP重定向,并允許最多跟蹤5次重定向。該值可以通過(guò)使用setConfig()方法修改$config的maxredirects選項(xiàng)進(jìn)行設(shè)置(具體內(nèi)容請(qǐng)參見(jiàn)28.1.4小節(jié))。與HTTP/1.1RFC(RequestForComments請(qǐng)求注解)一致,HTTP301and302(永久轉(zhuǎn)向與暫時(shí)轉(zhuǎn)向)請(qǐng)求將會(huì)被Client以相同的請(qǐng)求方法發(fā)送到指定的位置。但是很多的Client并不這樣執(zhí)行,當(dāng)頁(yè)面重定向時(shí)它總是向新的地址使用GET方法。默認(rèn)情況下,Zend_Http_Client也這樣處理。當(dāng)讀取到301或者302轉(zhuǎn)向的請(qǐng)求時(shí),所有的GET和POST參數(shù)都將被重置,而都以一個(gè)GET請(qǐng)求的形式被發(fā)送到一個(gè)新的地址。該行為可以通過(guò)將$config數(shù)組的strictredirects配置項(xiàng)設(shè)置為T(mén)rue來(lái)改變。,28.2.2使用Cookie,Zend_Http_Client類為請(qǐng)求中添加Cookie提供了一個(gè)很簡(jiǎn)單的接口。因此,不需要為頁(yè)面發(fā)送特別的頭信息,只需要執(zhí)行setCookie()方法即可。該方法有多種調(diào)用方式,不論何種方式均可以實(shí)現(xiàn)相同的功能,其語(yǔ)法格式如以下代碼所示。setCookie($cookie,$value=null),28.2.3實(shí)現(xiàn)文件上傳,通常情況下,要想實(shí)現(xiàn)文件上傳,需要使用HTML中的Form表單里的File表單項(xiàng)。而使用Zend_Http_Client的setFileUpload()方法,也可以模擬實(shí)現(xiàn)文件上傳的功能。該方法的語(yǔ)法格式如以下代碼所示。setFileUpload($filename,$formname,$data=null,$ctype=null),28.2.4HTTPAuth認(rèn)證,目前的Zend_Http_Client只支持最基本的HTTP認(rèn)證。通過(guò)Zend_Http_Client的setAuth()方法即可實(shí)現(xiàn)這樣的功能。該方法的語(yǔ)法格式如以下代碼所示。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連接器,默認(rèn)情況下,Zend_Http_Client將會(huì)使用Zend_Http_Client_Adapter_Socket連接器作為其默認(rèn)的連接器。除非使用了setConfig()方法對(duì)其進(jìn)行修改,否則將一直使用此連接器。該連接器基于PHP中的fsocketopen()函數(shù),不需要其他特別的PHP擴(kuò)展即可運(yùn)行。,28.3.2Proxy連接器,Zend_Http_Client_Adapter_Proxy(代理)連接器與默認(rèn)的Socket連接器十分類似。二者的不同在于代理連接器的連接是通過(guò)一個(gè)HTTP代理服務(wù)器進(jìn)行;而Socket連接器則是直接連接到目標(biāo)服務(wù)器。該連接器允許Zend_Http_Client通過(guò)代理服務(wù)器進(jìn)行連接,這也是需要更高的安全性與執(zhí)行的原因。,28.3.3Test連接器,Zend_Http_Client_Adapter_Test連接器提供了一個(gè)可選方法setResponse()。該方法的語(yǔ)法格式如以下代碼所示。setResponse($response),28.3.4自定義連接器,Zend_Http_Client_Adapter提供了連接器接口類Zend_Http_Client_Adapter_Interface。這為用戶創(chuàng)建自定義連接器提供了可能,用戶只需要繼承該接口即可創(chuàng)建自定義的連接器。,28.4Zend_Http_Cookie,在使用Zend_Http_Client類進(jìn)行setCookie()操作時(shí),需要使用到另一個(gè)Zend_Http子類Zend_Http_Cookie。該子類提供了對(duì)于Cookie的常規(guī)操作,其內(nèi)容包括分析HTTP響應(yīng)字符串、收集Cookie信息以及訪問(wèn)Cookie的屬性等。本節(jié)就來(lái)介紹Zend_Http_Cookie的使用。,28.4.1創(chuàng)建實(shí)例,要初始化一個(gè)Zend_Http_Cookie對(duì)象可以通過(guò)兩種方法來(lái)實(shí)現(xiàn),第一種為使用類的構(gòu)造方法;另一種為調(diào)用其靜態(tài)方法fromString()。下面就這兩種不同的方法分別作介紹。1使用類的構(gòu)造方法2使用fromString()方法,28.4.2獲取信息方法,在Zend_Http_Cookie中提供了這樣一組方法用于實(shí)現(xiàn)該類操作。這些方法包括如下幾個(gè)。getName()方法getValue()方法getDomain()方法getPath()方法getExpiryTime()方法除了以上方法外,Zend_Http_Cookie還提供了幾個(gè)判斷方法來(lái)判斷Cookie的行為。該類判斷方法有以下幾個(gè)。isSecure()方法isExpired(int$time=null)方法isSessionCookie()方法,28.4.3匹配Cookie,使用Zend_Http_Cookie的math()方法可以對(duì)Cookie是否與給定的事態(tài)相匹配做出判斷,并以此判斷是否發(fā)送Cookie。該方法的語(yǔ)法格式如以下代碼所示。match($uri,$matchSessionCookies=true,$now=null),28.5Zend_Http_Response,Zend_Http_Response類是由Zend_Http_Client的request()請(qǐng)求所返回的響應(yīng)。該類可以提供簡(jiǎn)單的訪問(wèn)方式,它提供一組方法用于訪問(wèn)返回的響應(yīng)信息。這些方法有如下幾個(gè)。isError()方法isSuccessful()方法isRedirect()方法getStatus()方法getMessage()方法getHeaders()方法getBody()方法,28.5.1判斷是否出錯(cuò)并返回狀態(tài),Zend_Http_Response的isError()方法用于判斷響應(yīng)是否出錯(cuò)。如果出錯(cuò)將返回錯(cuò)誤代碼,反之則返回False。,28.5.2判斷是否成功,isSuccessful()方法與isError()方法正好相反。后者在請(qǐng)求返回成功(返回狀態(tài)碼200,即狀態(tài)為OK)時(shí)返回False,而前者則在請(qǐng)求返回成功(返回狀態(tài)碼200,即狀態(tài)為OK)返回True。,28.5.3返回頭部信息,Zend_Http_Response的getHeaders()方法用于獲取所返回的HTTP頭信息,并賦值到一個(gè)數(shù)組中。合理使用該信息
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大學(xué)班級(jí)聚餐活動(dòng)方案
- 處暑創(chuàng)意活動(dòng)方案
- 地球圈層活動(dòng)方案
- 外墻裝飾活動(dòng)方案
- 大型集會(huì)活動(dòng)方案
- 大型親子活動(dòng)方案
- 大班開(kāi)展安全活動(dòng)方案
- 大型活動(dòng)公益活動(dòng)方案
- 地區(qū)數(shù)學(xué)展示課活動(dòng)方案
- 大型游輪活動(dòng)方案
- 第五單元 第5節(jié) 跨學(xué)科實(shí)踐:制作望遠(yuǎn)鏡 教學(xué)設(shè)計(jì)-2024-2025學(xué)年人教版物理八年級(jí)上冊(cè)
- 2022-2023學(xué)年湖南省岳陽(yáng)市城區(qū)人教版六年級(jí)下冊(cè)期末測(cè)試數(shù)學(xué)試卷(原卷版+解析)
- 2023年湖南省普通高等學(xué)校對(duì)口招生考試語(yǔ)文題
- 人工智能算法開(kāi)發(fā)合作合同
- 和合文化與國(guó)際傳播
- 客服主管崗位周工作計(jì)劃
- 煤礦急救知識(shí)培訓(xùn)課件
- 高速公路路產(chǎn)賠(補(bǔ))償收費(fèi)標(biāo)準(zhǔn)表
- 壓接端子檢驗(yàn)標(biāo)準(zhǔn)
- 雙方關(guān)于2024年度地鐵車輛采購(gòu)及維護(hù)合同2篇
- 中心靜脈導(dǎo)管相關(guān)血流感染的預(yù)防及護(hù)理
評(píng)論
0/150
提交評(píng)論