CWebServiceAction
鍖 | system.web.services |
---|---|
缁ф壙 | class CWebServiceAction » CAction » CComponent |
瀹炵幇 | IAction |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CWebServiceAction.php 3426 2011-10-25 00:01:09Z alexander.makarow $ |
婧愮爜 | framework/web/services/CWebServiceAction.php |
CWebServiceAction鏈嶅姟鏈変袱涓洰鐨勩備竴鏂归潰锛 瀹冩樉绀篧SDL涓寚瀹氱殑Web鏈嶅姟API鐨勫唴瀹广傚彟涓鏂归潰锛屽畠璋冪敤璇锋眰鐨刉eb service API銆備竴涓狦ET鍙傛暟鍚嶄负
ws
锛
鐢ㄦ潵鍖哄垎杩欎袱涓柟闈細GET鍙傛暟鐨勫瓨鍦
鎸囩ず鎵ц鍚庤呯殑琛屽姩銆
榛樿鎯呭喌涓嬶紝CWebServiceAction灏嗕娇鐢ㄥ綋鍓嶆帶鍒跺櫒 浣滀负Web service鎻愪緵鑰呫傚弬瑙CWsdlGenerator濡備綍澹版槑 鍙互杩滅▼璋冪敤鐨勬柟娉曘
璇锋敞鎰忥紝PHP SOAP鎵╁睍瀵逛簬杩欎竴鍔ㄤ綔鏄繀闇鐨勩
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
classMap | array | 鍦╓SDL涓0鏄庡鏉傜被鍨嬬殑PHP绫荤殑鍒楄〃銆 杩欏簲璇ユ槸涓涓猈SDL绫诲瀷浣滀负閿拰鍚嶇О浣滀负鍊肩殑PHP绫荤殑鏁扮粍銆 涓涓狿HP绫伙紝涔熷彲浠ユ寚瀹氫竴涓矾寰勫埆鍚嶃 | CWebServiceAction |
controller | CController | 鎷ユ湁杩欎釜鍔ㄤ綔鐨勬帶鍒跺櫒銆 | CAction |
id | string | 鍔ㄤ綔鐨処D銆 | CAction |
provider | mixed | Web service鎻愪緵鑰呯殑瀵硅薄鎴栬呯被鍚嶃 濡傛灉鎸囧畾涓涓被鍚嶏紝瀹冨彲浠ユ槸涓涓矾寰勫埆鍚嶃 榛樿涓簄ull锛岃繖鎰忓懗鐫褰撳墠鎺у埗鍣ㄦ槸浣滀负鏈嶅姟鎻愪緵鑰呫 濡傛灉鎻愪緵鑰呭疄鐜颁簡鎺ュ彛IWebServiceProvider锛 杩欏皢鏄兘澶熸嫤鎴繙绋嬫柟娉曡皟鐢紝骞舵墽琛岄澶栫殑浠诲姟 锛堝楠岃瘉锛屽啓鏃ュ織锛夈 | CWebServiceAction |
service | CWebService | 杩斿洖鐩墠姝e湪浣跨敤鐨刉eb鏈嶅姟瀹炰緥銆 | CWebServiceAction |
serviceOptions | array | 涓CWebService瀵硅薄鍒濆灞炴у笺 鏁扮粍閿槸CWebService鐨勫睘鎬у悕绉帮紝 鏁扮粍涓殑鍊兼槸鐩稿簲鐨勫睘鎬х殑鍒濆鍊笺 | CWebServiceAction |
serviceUrl | string | Web service鐨刄RL銆傞粯璁や负null锛岃繖鎰忓懗鐫 杩欎釜鍔ㄤ綔鐨刄RL鏄敤鏉ユ彁渚沇eb鏈嶅姟銆 鍦ㄨ繖绉嶆儏鍐典笅锛屼竴涓懡鍚嶄负serviceVar鐨凣ET鍙傛暟 灏嗚鐢ㄦ潵纭畾褰撳墠璇锋眰鏄惁鏄疻SDL鎴朩eb鏈嶅姟鐨勩 | CWebServiceAction |
serviceVar | string | GET鍙傛暟鐨勫尯鍒粠涓涓猈eb鏈嶅姟璇锋眰鐨 WSDL璇锋眰鐨勫悕绉般傚鏋滃瓨鍦ㄨ繖涓狦ET鍙傛暟锛岃姹傝璁や负鏄綔涓轰竴涓猈eb鏈嶅姟璇锋眰锛 鍚﹀垯锛屽畠鏄竴涓猈SDL璇锋眰銆傞粯璁や负鈥渨s鈥濄 | CWebServiceAction |
wsdlUrl | string | WSDL鐨刄RL銆傞粯璁や负null锛岃繖鎰忓懗鐫 杩欎釜鍔ㄤ綔鐨刄RL鏄敤鏉ユ湇鍔$殑WSDL鏂囨。銆 | CWebServiceAction |
鍏叡鏂规硶
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
createWebService() | 鍒涘缓CWebService瀹炰緥銆 | CWebServiceAction |
runWithParamsInternal() | 鎵ц涓涓甫鏈夊懡鍚嶅弬鏁扮殑瀵硅薄鐨勬柟娉曘 | CAction |
灞炴ц缁
鍦╓SDL涓0鏄庡鏉傜被鍨嬬殑PHP绫荤殑鍒楄〃銆 杩欏簲璇ユ槸涓涓猈SDL绫诲瀷浣滀负閿拰鍚嶇О浣滀负鍊肩殑PHP绫荤殑鏁扮粍銆 涓涓狿HP绫伙紝涔熷彲浠ユ寚瀹氫竴涓矾寰勫埆鍚嶃
Web service鎻愪緵鑰呯殑瀵硅薄鎴栬呯被鍚嶃 濡傛灉鎸囧畾涓涓被鍚嶏紝瀹冨彲浠ユ槸涓涓矾寰勫埆鍚嶃 榛樿涓簄ull锛岃繖鎰忓懗鐫褰撳墠鎺у埗鍣ㄦ槸浣滀负鏈嶅姟鎻愪緵鑰呫 濡傛灉鎻愪緵鑰呭疄鐜颁簡鎺ュ彛IWebServiceProvider锛 杩欏皢鏄兘澶熸嫤鎴繙绋嬫柟娉曡皟鐢紝骞舵墽琛岄澶栫殑浠诲姟 锛堝楠岃瘉锛屽啓鏃ュ織锛夈
杩斿洖鐩墠姝e湪浣跨敤鐨刉eb鏈嶅姟瀹炰緥銆
涓CWebService瀵硅薄鍒濆灞炴у笺 鏁扮粍閿槸CWebService鐨勫睘鎬у悕绉帮紝 鏁扮粍涓殑鍊兼槸鐩稿簲鐨勫睘鎬х殑鍒濆鍊笺
Web service鐨刄RL銆傞粯璁や负null锛岃繖鎰忓懗鐫 杩欎釜鍔ㄤ綔鐨刄RL鏄敤鏉ユ彁渚沇eb鏈嶅姟銆 鍦ㄨ繖绉嶆儏鍐典笅锛屼竴涓懡鍚嶄负serviceVar鐨凣ET鍙傛暟 灏嗚鐢ㄦ潵纭畾褰撳墠璇锋眰鏄惁鏄疻SDL鎴朩eb鏈嶅姟鐨勩
GET鍙傛暟鐨勫尯鍒粠涓涓猈eb鏈嶅姟璇锋眰鐨 WSDL璇锋眰鐨勫悕绉般傚鏋滃瓨鍦ㄨ繖涓狦ET鍙傛暟锛岃姹傝璁や负鏄綔涓轰竴涓猈eb鏈嶅姟璇锋眰锛 鍚﹀垯锛屽畠鏄竴涓猈SDL璇锋眰銆傞粯璁や负鈥渨s鈥濄
WSDL鐨刄RL銆傞粯璁や负null锛岃繖鎰忓懗鐫 杩欎釜鍔ㄤ綔鐨刄RL鏄敤鏉ユ湇鍔$殑WSDL鏂囨。銆
鏂规硶璇︾粏
protected CWebService createWebService(mixed $provider, string $wsdlUrl, string $serviceUrl)
| ||
$provider | mixed | Web鏈嶅姟鎻愪緵鑰呯殑绫诲悕鎴栧璞 |
$wsdlUrl | string | WSDL鐨刄RL銆 |
$serviceUrl | string | Web service鐨刄RL銆 |
{return} | CWebService | Web service鐨勫疄渚 |
protected function createWebService($provider,$wsdlUrl,$serviceUrl)
{
return new CWebService($provider,$wsdlUrl,$serviceUrl);
}
鍒涘缓CWebService瀹炰緥銆 浣犲彲浠ラ噸鍐欐鏂规硶鑷畾涔夊垱寤虹殑瀹炰緥銆
public CWebService getService()
| ||
{return} | CWebService | Web service鐨勫疄渚 |
public function getService()
{
return $this->_service;
}
杩斿洖鐩墠姝e湪浣跨敤鐨刉eb鏈嶅姟瀹炰緥銆
public void run()
|
public function run()
{
$hostInfo=Yii::app()->getRequest()->getHostInfo();
$controller=$this->getController();
if(($serviceUrl=$this->serviceUrl)===null)
$serviceUrl=$hostInfo.$controller->createUrl($this->getId(),array($this->serviceVar=>1));
if(($wsdlUrl=$this->wsdlUrl)===null)
$wsdlUrl=$hostInfo.$controller->createUrl($this->getId());
if(($provider=$this->provider)===null)
$provider=$controller;
$this->_service=$this->createWebService($provider,$wsdlUrl,$serviceUrl);
if(is_array($this->classMap))
$this->_service->classMap=$this->classMap;
foreach($this->serviceOptions as $name=>$value)
$this->_service->$name=$value;
if(isset($_GET[$this->serviceVar]))
$this->_service->run();
else
$this->_service->renderWsdl();
Yii::app()->end();
}
鎵ц鍔ㄤ綔銆 濡傛灉GET鍙傛暟serviceVar瀛樺湪锛岃繖涓姩浣滃鐞嗚繙绋嬫柟娉曡皟鐢ㄣ 濡傛灉娌℃湁锛屽姩浣滃皢璋冪敤鏈嶅姟鐨刉SDL鍐呭锛