zoukankan      html  css  js  c++  java
  • 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中使用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' => 'mongosoftsoapserverAction', 这样配置之后,就可以通过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' => 'mongosoftsoapserverAction',
     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' => 'mongosoftsoapclientClient',
     4         'url' => 'http://myservice.com/api/hello',
     5         'options' => [
     6             'cache_wsdl' => WSDL_CACHE_NONE,
     7         ],
     8     ]
     9     ...
    10 ]

    或者也可以直接在代码中使用:

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

    b、使用

    1 $client = Yii::$app->siteApi;
    2 echo $client->getHello('Alex');
  • 相关阅读:
    Jzoj2682 最长双回文串
    Jzoj2682 最长双回文串
    【hdu3853】Loops
    【tyvj1015】【caioj1060】公路乘车
    【luogu1064】金明的预算方案
    【bzoj1260】【CQOI2007】涂色paint
    【UVa1629】Cake slicing
    【NYOJ746】整数划分(四)
    【NYOJ 15】括号匹配2
    【poj2955】Brackets
  • 原文地址:https://www.cnblogs.com/Steven-shi/p/8601424.html
Copyright © 2011-2022 走看看