激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - 在PHP中利用wsdl創(chuàng)建標(biāo)準(zhǔn)webservice的實(shí)現(xiàn)代碼

在PHP中利用wsdl創(chuàng)建標(biāo)準(zhǔn)webservice的實(shí)現(xiàn)代碼

2019-12-19 14:57PHP教程網(wǎng) PHP教程

網(wǎng)上有現(xiàn)成的nusoap,我沒使用,如果使用了,我可能就不知道PHP是怎么創(chuàng)建webservice的了

1、創(chuàng)建wsdl 
說明: 
A、非標(biāo)準(zhǔn)的webservice,可能只能PHP才能訪問 
B、標(biāo)準(zhǔn)的webservice,就必須要使用wsdl(webservice description language,就是用XML語法標(biāo)準(zhǔn)來描述你的服務(wù)內(nèi)容,我是這么理解的) 
在這里我只介紹標(biāo)準(zhǔn)的webservice。 
那么如何創(chuàng)建wsdl呢?對(duì)于PHP來說這確實(shí)是件很不容易的事情,有人說用zend studio創(chuàng)建很方便,這是一種方法。但對(duì)于那些不喜歡用zend studio的人來說,會(huì)覺得創(chuàng)建一個(gè)webservice還要安裝zend studio,太強(qiáng)人所難了,我就是,嘿嘿。 
在這里我介紹一個(gè)簡(jiǎn)單的方法,到網(wǎng)上下載SoapDiscovery.class.php類,里面有個(gè)公用方法:getWSDL,這個(gè)方法末尾是用的return,那么,你修改一下這個(gè)方法,我是這么做的: 
//return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>'); 
//生成wsdl文件,將上面的return注釋 
$fso = fopen($this->class_name . ".wsdl" , "w"); 
fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>')); 
現(xiàn)在生成wsdl的類有了,SoapDiscovery.class.php★。 

我只要再準(zhǔn)備一個(gè)提供服務(wù)的類或者函數(shù)就可以創(chuàng)建wsdl了 
比如我有個(gè)類:person,文件名為:person.class.php★,里面有兩個(gè)方法,一個(gè)是say,一個(gè)是run。很簡(jiǎn)單。 

復(fù)制代碼代碼如下:


<?php 
class person 

public function say() 

return("i'm speaking."); 

public function run() 

return("i'm running,don't disturb me please."); 


?> 


到這里有兩個(gè)類了:SoapDiscovery.class.php和person.class.php。 
開始正式生成wsdl: 
創(chuàng)建文件server.php。將以下內(nèi)容拷貝進(jìn)去,運(yùn)行即可生成一個(gè)person.wsdl文件 

復(fù)制代碼代碼如下:


<?php 
include("person.class.php"); 
include("SoapDiscovery.class.php"); 

$disco = new SoapDiscovery('person','Person');//第一個(gè)參數(shù)是類名(生成的wsdl文件就是以它來命名的),即person類,第二個(gè)參數(shù)是服務(wù)的名字(這個(gè)可以隨便寫)。 
$disco->getWSDL(); 
?> 


2、創(chuàng)建webservice服務(wù)端程序 
將server.php文件的內(nèi)容清空,復(fù)制以下代碼進(jìn)去: 

復(fù)制代碼代碼如下:


<?php 
include("person.class.php"); 
$objSoapServer = new SoapServer("person.wsdl");//person.wsdl是剛創(chuàng)建的wsdl文件 
//$objSoapServer = new SoapServer("server.php?wsdl");//這樣也行 
$objSoapServer->setClass("person");//注冊(cè)person類的所有方法 
$objSoapServer->handle();//處理請(qǐng)求 
?> 


3、創(chuàng)建webservice客戶端程序,測(cè)試webservice是否有效,文件名是:client.php 
將以下內(nèi)容拷貝進(jìn)去 

復(fù)制代碼代碼如下:


<?php 
$client = new SoapClient("person.wsdl"); 
//$client = new SoapClient("server.php?wsdl");//這樣也行 
echo($client->say()); 
echo "<br />"; 
echo($client->run()); 
echo "<br />"; 
?> 


OK,結(jié)束。很簡(jiǎn)單吧? 
.NET如果要使用的話,你只要提供一個(gè)url給他就行了。 
獲得url的方法:你可以先到person.wsdl文件里面查找<soap:address location="http://xxxxxxxxxxxxxxxxxxxx/server.php" />,這里的url(具體url是根據(jù)你的目錄確定的)就是你要提供給.NET開發(fā)人員使用的。不過別高興太早,后面要加:“?wsdl”,http://xxxxxxxxxxxxxxxxxxxx/server.php?wsdl這樣才是對(duì)的,不信你可以將url拷貝到瀏覽器的地址欄里看下就知道了。 
.NET開發(fā)人員獲得你給他的url之后,就可以在自己的項(xiàng)目里面添加一個(gè)服務(wù)引用或者web引用了,然后就可以根據(jù)提示完成相關(guān)操作,對(duì)于使用.NET的開發(fā)人員來說很簡(jiǎn)單的。 

在這里我只介紹標(biāo)準(zhǔn)的webservice 
一、 創(chuàng)建WSDL 
1。網(wǎng)上下載SoapDiscovery.class.php類 
2。修改SoapDiscovery.class.php的公共方法getWsdl(),讓其自動(dòng)生成wsdl文件(注意存放路徑),這里只是創(chuàng)建一個(gè)wsdl模型 

復(fù)制代碼代碼如下:


//return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>'); 
//生成wsdl文件,將上面的return注釋 
$fso = fopen($this->class_name . ".wsdl" , "w"); 
fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>')); 
exit; 


3。提供服務(wù)的類或者函數(shù) 

復(fù)制代碼代碼如下:


//比如我有個(gè)類:person,文件名為:person.class.php★,里面有兩個(gè)方法,一個(gè)是say,一個(gè)是run。很簡(jiǎn)單。 
<?php 
class person 

public function say() 

return("i'm speaking."); 

public function run() 

return("i'm running,don't disturb me please."); 


?> 


4。開始正式生成wsdl: 
創(chuàng)建文件server.php。將以下內(nèi)容拷貝進(jìn)去,運(yùn)行即可生成一個(gè)person.wsdl文件 

復(fù)制代碼代碼如下:


<?php 
include("person.class.php"); 
include("SoapDiscovery.class.php"); 
//第一個(gè)參數(shù)是類名(生成的wsdl文件就是以它來命名的),即person類,第二個(gè)參數(shù)是服務(wù)的名字(這個(gè)可以隨便寫)。 
$disco = new SoapDiscovery('person','Person'); 
$disco->getWSDL(); 
?> 


5。創(chuàng)建webservice服務(wù)端程序 
將server.php文件的內(nèi)容清空,復(fù)制以下代碼進(jìn)去: 

復(fù)制代碼代碼如下:


<?php 
include("person.class.php"); 
$objSoapServer = new SoapServer("person.wsdl");//person.wsdl是剛創(chuàng)建的wsdl文件 
//$objSoapServer = new SoapServer("server.php?wsdl");//這樣也行 
$objSoapServer->setClass("person");//注冊(cè)person類的所有方法 
$objSoapServer->handle();//處理請(qǐng)求 
?> 


6。創(chuàng)建webservice客戶端程序,測(cè)試webservice是否有效,文件名是:client.php 

復(fù)制代碼代碼如下:


<?php 
$client = new SoapClient("person.wsdl"); 
//$client = new SoapClient("server.php?wsdl");//這樣也行 
echo($client->say()); 
echo "<br />"; 
echo($client->run()); 
echo "<br />"; 
?> 


7。.NET如果要使用的話,你只要提供一個(gè)url給他就行了。 
獲得url的方法:你可以先到person.wsdl文件里面查找<soap:address location="http://xxxxxxxxxxxxxxxxxxxx/server.php" />,這里的url(具體url是根據(jù)你的目錄確定的)就是你要提供給.NET開發(fā)人員使用的。不過別高興太早,后面要加:“?wsdl”,http://xxxxxxxxxxxxxxxxxxxx/server.php?wsdl這樣才是對(duì)的,不信你可以將url拷貝到瀏覽器的地址欄里看下就知道了。 
.NET開發(fā)人員獲得你給他的url之后,就可以在自己的項(xiàng)目里面添加一個(gè)服務(wù)引用或者web引用了,然后就可以根據(jù)提示完成相關(guān)操作,對(duì)于使用.NET的開發(fā)人員來說很簡(jiǎn)單的。 

(1)創(chuàng)建一網(wǎng)站,創(chuàng)建一個(gè)web引用,輸入url 

(2)實(shí)力調(diào)用 

復(fù)制代碼代碼如下:


protected void Page_Load(object sender, EventArgs e) 

if (!IsPostBack) { 
sdaf.Solsoft_HelloWorld ddd = new sdaf.Solsoft_HelloWorld(); 
Label1.Text = ddd.say(); 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: fc2成人免费人成在线观看播放 | 国产精品一区久久久久 | 久久久噜噜噜久久熟有声小说 | 免费看成年人网站 | 国产日韩在线观看一区 | 香蕉国产在线视频 | 免费看成人毛片 | 黄色片在线观看网站 | 最新在线中文字幕 | 久久久www免费看片 日本视频网 | 看黄在线观看 | 精国品产一区二区三区有限公司 | 操毛片 | 久久国产亚洲精品 | 粉色视频污 | 蜜桃视频在线免费播放 | 九色p| 在线观看一二三 | 被摁着灌浓精囚禁高h1v1 | 欧美在线观看视频一区 | 老师你怎么会在这第2季出现 | 久久蜜桃香蕉精品一区二区三区 | 国产精品一区二区免费在线观看 | 91美女视频在线观看 | 18视频网站在线观看 | 国产喷白浆10p | 久久av免费 | 亚洲黑人在线观看 | 精品国产91久久久久久久 | 久久久久成人网 | 麻豆传传媒久久久爱 | 黄视频在线网站 | 国产精品自拍99 | 国产精品久久久久久久久久妇女 | avhd101高清在线迷片麻豆 | 精品一二三区视频 | 中文字幕在线观看视频www | 久久久久久三区 | 欧美性精品videofree | 亚洲男人天堂 | 国产xxxx岁13xxxxhd |