• 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)

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

a、您需要将[[mongosoft \ soapserver \ Action]]添加到你的控制器。

注意:在你的服务类中,可调用的方法必须是包含'@soap'标签的doc注释块的公共方法

 class ApiController extends Controller
{
/**
* @inheritdoc
*/
public function actions()
{
return [
'hello' => 'mongosoft\soapserver\Action', 这样配置之后,就可以通过http://www.myservice.com/api/hello hello即前面的键
];
} /**
* @param string $name
* @return string
* @soap #这里必须是包含'@soap'标签的doc注释块,否则生成的wsdl文件中将不会展示这个方法
*/
public function getHello($name)
{
return 'Hello ' . $name;
}
}

b、如果你想禁用SoapService的WSDL模式,可以通过serviceOptions参数来设置

 /**
* @inheritdoc
*/
public function actions()
{
return [
'index' => [
'class' => 'mongosoft\soapserver\Action',
'serviceOptions' => [
'disableWsdlMode' => true,
]
]
];
}

2、安装soap客户端扩展

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

a、配置:

 'components' => [
'siteApi' => [
'class' => 'mongosoft\soapclient\Client',
'url' => 'http://myservice.com/api/hello',
'options' => [
'cache_wsdl' => WSDL_CACHE_NONE,
],
]
...
]

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

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

b、使用

 $client = Yii::$app->siteApi;
echo $client->getHello('Alex');

Yii2中使用Soap WebSerivce的更多相关文章

  1. yii2中如何使用modal弹窗之基本使用

    作者:白狼 出处:http://www.manks.top/yii2_modal_baseuse.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...

  2. Yii2中多表关联查询(join、joinwith)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order      (id  order_name ...

  3. PHP在yii2中封装SuperSlide 幻灯片编写自己的SuperSlideWidget的例子

    因为近期给朋友公司做个门户网站,把荒置了6.7年的PHP又重新拾起,发现PHP这些年兴旺多了,很多新的东西看的不明不白,研究了几个框架ZendFramework.thinkphp.Symfony.yi ...

  4. [moka同学笔记]Yii2中多表关联查询(join、joinwith) (摘录)

    表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_name       cu ...

  5. Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)(转)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_ ...

  6. Yii2.0中文开发向导——Yii2中多表关联查询(join、joinwith)

    我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_ ...

  7. yii2中的url美化

    在yii2中,如果想实现类似于post/1,post/update/1之类的效果,官方文档已经有明确的说明 但是如果想把所有的controller都实现,这里采用yii1的方法 'rules' =&g ...

  8. 在ASP.NET中使用SOAP Extensions捕获WebService异常

    原文:在ASP.NET中使用SOAP Extensions捕获WebService异常 Application_Error不能捕获的异常 [WebMethod] public string Hello ...

  9. js生成的cookie在yii2中获取不到的解决办法

    在js中创建的cookie,默认用yii2中自带的方法Yii::$app->request->cookies->get('abc')获取不到,而用$_COOKIE['abc']又是能 ...

随机推荐

  1. 简单的自动升级提示AutoUpdater

    看过网上“圣殿骑士”和其他人的升级做法,感觉不太适合几十M的小型软件. 之前用的一直都是clickonce,但是3年下来感觉弊端太多,比如安装不能选择文件夹.打包不全.版本等问题,于是决定另辟捷径. ...

  2. ArcGIS软件操作——地图配准

    初次写博文,出现措词不当.表述不明确等之类的问题,敬请见谅,但会努力做好.同时,也欢迎各位提出意见,共同交流,共同进步! 直奔主题——运用ArcGIS软件对地图进行配准! 1 数据准备:网络下载的中国 ...

  3. Python爬虫教程-34-分布式爬虫介绍

    Python爬虫教程-34-分布式爬虫介绍 分布式爬虫在实际应用中还算是多的,本篇简单介绍一下分布式爬虫 什么是分布式爬虫 分布式爬虫就是多台计算机上都安装爬虫程序,重点是联合采集.单机爬虫就是只在一 ...

  4. NS Simulation: Scheduling Events (examples inside)

    NS Simulation: Scheduling Events Simulation time A similation system (such as NS) must have a built- ...

  5. tempdb过大事故记录-sqlserver

    今天收到预警消息,提示磁盘空间已经满了,感觉很奇怪.刚装的新机器怎么可能会磁盘空间不足.登陆看了看 可以看的到tempdb已经65G的了,而且显示是百分百可用.这个就很奇怪了,为什么会出现这种情况呢. ...

  6. 华为手机在开发Android调试时logcat不显示输出信息的解决办法

    手机连接电脑RUN AS logcat 提示:Unable to open log device '/dev/log/main': No such file or directory 信息 本人华为C ...

  7. tooler_help

    );// "}"        return $uuid;    }}echo guid();?>

  8. ssh_exchange_identification: Connection closed by remote host

    用服务器内网ip连接同子网服务器的时候显示ssh_exchange_identification: Connection closed by remote host 防火墙什么都关闭了,还是显示这个问 ...

  9. c# 的传递参数值传递与传递引用的区别,ref与out区别

    值传递 C#默认都是值传递的,就是复制变量的一个副本传递给方法,所以在退出方法后,对变量的修改无效. 但是要注意,当传递是引用类型时,因为引用类型是一个引用的地址,所以修改引用地址指向的对象时,一样会 ...

  10. vmware虚拟机添加新硬盘

    1    vmware中添加硬盘 2    重启虚拟机后,fdisk -l 查看已经挂在好的硬盘,比如/dev/sdb3    mkfs.ext3 /dev/sdb4    挂在: mount /de ...