Yii2中使用Soap WebSerivce

  • 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中使用soapweb

注意:能正常使用soap的前提條件是記得打開PHP的soap擴展 json

一、首先安裝soap服務端擴展(SOAP Server Extensionapi

1 composer require --prefer-dist mongosoft/yii2-soap-server "*"

a、您須要將[[mongosoft \ soapserver \ Action]]添加到你的控制器。yii2

注意:在你的服務類中,可調用的方法必須是包含'@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參數來設置app

 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     }

二、安裝soap客戶端擴展composer

1 composer require --prefer-dist mongosoft/yii2-soap-client "*"

a、配置:yii

 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 ]

或者也能夠直接在代碼中使用:ui

1 $client = new \mongosoft\soapclient\Client([
2     'url' => 'http://myservice.com/api/hello',
3 ]);

b、使用url

1 $client = Yii::$app->siteApi;
2 echo $client->getHello('Alex');
相關文章
相關標籤/搜索