欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Yii2中使用Soap WebSerivce

程序员文章站 2024-01-20 16:02:28
Soap是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议 WebService顾名思义就是web服务,web服务主要有两种,一种是基于soap类型的服务,一种是基于rest类型的服务,其中soap类型的服务有两种版本,一种是soap1.1版本,一种是soap1.2版本,soap ......
  • 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');

 

您需要将[[mongosoft \ soapserver \ Action]]添加到Web控制器。