自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PHP中SOAP協(xié)議的使用和相關(guān)調(diào)試

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
這里我們主要講解了PHP中SOAP協(xié)議的使用。那么具體的代碼和操作結(jié)果,我們都有介紹,希望對大家有所幫助。

這次我們主要講解一下PHP的調(diào)試內(nèi)容,其中涉及了SOAP協(xié)議的使用。使用PHP中調(diào)用 WebService,聽上去有些高深莫測啊.其實這是很簡單的一件事.由于 Web服務(wù)完全是基于 XML 這種平臺無關(guān)性的標記語言來實現(xiàn)的,所以在 PHP中實現(xiàn)訪問 WebService 是可能的.本例我們來完成這樣一個 Web服務(wù)的調(diào)用:獲取手機號信息.在互聯(lián)網(wǎng)上找到這樣一個 Web服務(wù)是比較容易的,這里我為大家提供一個現(xiàn)成的:http://www.webxml.com.cn/zh_cn/web_services_item.aspx?id=776756327947797A706B413D.

該網(wǎng)站提供了一系列的 Web服務(wù),其中有收費的,也有可以免費使用的.在您打開上述網(wǎng)址后,將會列出"通訊和通信"分類下的所有可用 Web服務(wù).如果網(wǎng)站內(nèi)容沒發(fā)生改變,那么您在右側(cè)看到的第一條即為"國內(nèi)手機號碼歸屬地查詢WEB服務(wù)".每個 Web服務(wù)下面,包括了三項地址:EndPoint、Disco和 Wsdl.至于這三項各代碼什么含義,您可查詢相關(guān)資料.這里我們要用到的是 EndPoint 和 Wsdl.

通過 EndPoint 我們可以了解如何使用該服務(wù).打開 "EndPoint" 后面的地址:http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx.

在新打開的頁面中顯示出來該服務(wù)下所包括的方法.這個服務(wù)有兩個公有方法,分別是 getDatabaseInfo 獲得國內(nèi)手機號碼歸屬地數(shù)據(jù)庫信息 getMobileCodeInfo 獲得國內(nèi)手機號碼歸屬地省份、地區(qū)和手機卡類型信息.

并且,需要注意的是兩個方法的參數(shù)問題(如是否需要、需要幾個參數(shù))和它的返回結(jié)果.第一個方法 getDatabaseInfo 不需要參數(shù),返回的結(jié)果是一個一維數(shù)組;而第二個方法 getMobileCodeInfo 則需要兩個參數(shù):mobileCode 和 userID,在實際使用中,這兩個參數(shù)的值分別是需要查詢地區(qū)的手機號和空字符串(免費用戶),它返回結(jié)果是一個字符串.

而 Wsdl 這個地址,是我們在 php 程序中需要使用的地址,現(xiàn)在返回對 PHP 的介紹.

在目前的 PHP5 中,已經(jīng)提供了對 SOAP協(xié)議的支持(至于 SOAP協(xié)議的解釋,您可查詢相關(guān)資料了解),它作為一種擴展存在于 PHP 中.在默認情況下,這個擴展是沒有被開啟的.開啟該擴展的方法:打開 PHP.ini 文件,找到 ;extension=php_soap.dll 一行,將其前面的注釋符";"去掉,保存并重啟 Apache 服務(wù).現(xiàn)在開始代碼編寫,頁面代碼如下:

  1. <head> 
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  3. <style type="text/css"> 
  4.    body{font-size:12px;}  
  5. </style> 
  6. </head> 
  7. <body> 
  8. <!-- 這里我隨意指定一個手機號碼,在下面的 PHP 代碼中它會作為參數(shù)的一部分 --> 
  9. <h1>A phone No: 13973738080</h1> 
  10. <?php 
  11. //這里是該服務(wù)的 WSDL 地址  
  12. $wsdl="http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl";  
  13. //實例化 Soap Client,即 Soap協(xié)議的客戶端  
  14. $client=new Soap Client($wsdl);  
  15. //使用 getMobileCodeInfo 方法,需要傳遞兩次參數(shù),需要注意的是,這兩個參數(shù)須放到一個數(shù)組中  
  16. $onePhone=$client->getMobileCodeInfo(  
  17.       array('mobileCode'=>'13973738080',  
  18.        'userID'=>''  
  19.       )  
  20. );  
  21. //顯示返回信息  
  22. print_r($onePhone);  
  23. ?> 
  24. <hr /> 
  25. <h1>All Information</h1> 
  26. <?php   
  27. //調(diào)用另外一個方法,該方法不需要參數(shù)  
  28. $result=$client->getDatabaseInfo();  
  29. //顯示其返回結(jié)果  
  30. print_r($result);  
  31. ?> 
  32. </body> 

運行結(jié)果,如下圖:

運行結(jié)果

看起來是很簡單吧,是的,就這么簡單.由于代碼中給出了比較詳細的注釋,所以就不再作過多解釋,但仍需要向讀者說明以下幾個問題:

1. SoapClient 是存在于 Soap.dll 擴展中的一個對象,用來"扮演" Soap協(xié)議的訪問過程中的客戶端,并為其提供相關(guān)功能.相應(yīng)的,該擴展中同樣存在一個用于提供(或創(chuàng)建) Web服務(wù)的 Soap協(xié)議服務(wù)端,它的任務(wù)由 Soap Server 來完成.至于 Soap Server 對象,我將在后續(xù)的講解中來說明它的用法.

2. Soap Client 的實例化:它的構(gòu)造函數(shù)包括兩處參數(shù),一個是 WSDL 文件(即 WSDL 地址),一個是選項列表,后面這個參數(shù)是可選的,它用來完成更復(fù)雜的訪問,如使用代理訪問,或者提供服務(wù)器需要驗證的用戶名和密碼,等等.這里不再詳述,讀者可參考相關(guān)資料.

3. Soap Client 實例化之后,就可以通過該實例化對象來調(diào)用該 WebService 的公有方法.

如果您對本文中介紹的方法有何意見或建議,請留下您的高見,歡迎交流.本文由 NBWD 原創(chuàng),請放心轉(zhuǎn)載.

 

責(zé)任編輯:佟健 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-07-14 17:26:36

SOAP協(xié)議

2010-07-14 17:16:35

SOAP協(xié)議

2009-12-07 15:56:46

PHP內(nèi)置SOAP

2010-09-02 16:39:30

SOAP協(xié)議

2011-06-22 10:48:35

PHP

2010-07-14 17:29:36

SOAP協(xié)議

2010-09-02 16:34:13

SOAP協(xié)議

2010-09-10 15:18:28

SOAP協(xié)議

2010-03-05 10:31:24

Ubuntu PHP

2010-09-02 16:46:52

SOAP協(xié)議

2010-09-10 15:04:40

SOAP HTTP

2010-07-06 16:43:18

UDP協(xié)議Java

2010-08-29 21:21:18

DHCP協(xié)議

2009-12-15 17:04:56

Ruby使用HTTP協(xié)

2009-12-10 16:40:04

PHP處理分頁

2010-06-29 15:51:22

Linux SNMP協(xié)

2010-06-30 10:26:43

2010-06-29 12:33:58

VoIP協(xié)議

2009-11-04 14:44:44

AOP.NET SOA

2010-09-10 15:33:26

SOAP協(xié)議應(yīng)答編碼
點贊
收藏

51CTO技術(shù)棧公眾號