- Soap是一種輕量的、簡單的、基於XML(標准通用標記語言下的一個子集)的協議
- WebService顧名思義就是web服務,web服務主要有兩種,一種是基於soap類型的服務,一種是基於rest類型的服務,其中soap類型的服務有兩種版本,一種是soap1.1版本,一種是soap1.2版本,soap服務類型的數據是xml數據格式的,而rest服務的數據類型是json格式的。
- WSDL(網絡服務描述語言)是Web Service的描述語言,也就是說wsdl文件是soap的使用說明書
Yii2中使用Soap WebSerivce 非常簡單,有人已經提供了相關的擴展可供我們使用,當然也可以自己寫,下面就拿別人寫好的擴展來說明怎么在yii2中使用soap
注意:能正常使用soap的前提條件是記得打開PHP的soap擴展
1、首先安裝soap服務端擴展(SOAP Server Extension)
1 composer require --prefer-dist mongosoft/yii2-soap-server "*"
a、您需要將[[mongosoft \ soapserver \ Action]]添加到你的控制器。
注意:在你的服務類中,可調用的方法必須是包含'@soap'標簽的doc注釋塊的公共方法
1 class ApiController extends Controller 2 { 3 /** 4 * @inheritdoc 5 */ 6 public function actions() 7 { 8 return [ 9 'hello' => 'mongosoft\soapserver\Action', 這樣配置之后,就可以通過http://www.myservice.com/api/hello hello即前面的鍵 10 ]; 11 } 12 13 /** 14 * @param string $name 15 * @return string 16 * @soap #這里必須是包含'@soap'標簽的doc注釋塊,否則生成的wsdl文件中將不會展示這個方法 17 */ 18 public function getHello($name) 19 { 20 return 'Hello ' . $name; 21 } 22 }
b、如果你想禁用SoapService的WSDL模式,可以通過serviceOptions參數來設置
1 /** 2 * @inheritdoc 3 */ 4 public function actions() 5 { 6 return [ 7 'index' => [ 8 'class' => 'mongosoft\soapserver\Action', 9 'serviceOptions' => [ 10 'disableWsdlMode' => true, 11 ] 12 ] 13 ]; 14 }
2、安裝soap客戶端擴展
1 composer require --prefer-dist mongosoft/yii2-soap-client "*"
a、配置:
1 'components' => [ 2 'siteApi' => [ 3 'class' => 'mongosoft\soapclient\Client', 4 'url' => 'http://myservice.com/api/hello', 5 'options' => [ 6 'cache_wsdl' => WSDL_CACHE_NONE, 7 ], 8 ] 9 ... 10 ]
或者也可以直接在代碼中使用:
1 $client = new \mongosoft\soapclient\Client([ 2 'url' => 'http://myservice.com/api/hello', 3 ]);
b、使用
1 $client = Yii::$app->siteApi; 2 echo $client->getHello('Alex');