PHP中soap的用法实例


Posted in PHP onOctober 24, 2014

本文实例讲述了PHP中soap的用法,分享给大家供大家参考。具体用法分析如下:

PHP 使用soap有两种方式。

一、用wsdl文件

服务器端:

<?php

class service

{

  public function HelloWorld()

   {

      return  "Hello";

   }

  public  function Add($a,$b)

   {

      return $a+$b;

   }

}

$server=new SoapServer('soap.wsdl',array('soap_version' => SOAP_1_2));

$server->setClass("service");

$server->handle();

?>

资源描述文件,可以用工具(zend studio)生成。其实就是一个xml文件。
<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://localhost/interface/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="soap" targetNamespace="http://localhost/interface/">

  <wsdl:types>

    <xsd:schema targetNamespace="http://localhost/interface/">

      <xsd:element name="HelloWorld">

        <xsd:complexType>

          <xsd:sequence>

            <xsd:element name="in" type="xsd:string"/>

          </xsd:sequence>

        </xsd:complexType>

      </xsd:element>

      <xsd:element name="HelloWorldResponse">

        <xsd:complexType>

          <xsd:sequence>

            <xsd:element name="out" type="xsd:string"/>

          </xsd:sequence>

        </xsd:complexType>

      </xsd:element>

      <xsd:element name="Add">

       <xsd:complexType>

        <xsd:sequence>

         <xsd:element name="in" type="xsd:int"></xsd:element>

        </xsd:sequence>

       </xsd:complexType>

      </xsd:element>

      <xsd:element name="AddResponse">

       <xsd:complexType>

        <xsd:sequence>
         <xsd:element name="out" type="xsd:int"></xsd:element>

        </xsd:sequence>

       </xsd:complexType>

      </xsd:element>

    </xsd:schema>

  </wsdl:types>

   <wsdl:message name="AddRequest">    <wsdl:part name="a" type="xsd:int"></wsdl:part>

   <wsdl:part name="b" type="xsd:int"></wsdl:part>

  </wsdl:message>

  <wsdl:message name="AddResponse">

   <wsdl:part name="c" type="xsd:int"></wsdl:part>

  </wsdl:message>

  <wsdl:portType name="TestSoap">     <wsdl:operation name="Add">

     <wsdl:input message="tns:AddRequest"></wsdl:input>

     <wsdl:output message="tns:AddResponse"></wsdl:output>

    </wsdl:operation>

  </wsdl:portType>

  <wsdl:binding name="soapSOAP" type="tns:TestSoap">

   <soap:binding style="document"

    transport="http://schemas.xmlsoap.org/soap/http" />

   <wsdl:operation name="Add">

    <soap:operation soapAction="http://localhost/interface/Add" />

    <wsdl:input>

     <soap:body use="literal"

      namespace="http://localhost/interface/" />

    </wsdl:input>

    <wsdl:output>

     <soap:body use="literal"

      namespace="http://localhost/interface/" />

    </wsdl:output>

   </wsdl:operation>

  </wsdl:binding>

  <wsdl:service name="TestSoap">

    <wsdl:port binding="tns:soapSOAP" name="soapSOAP">

      <soap:address location="http://localhost/interface/myservice.php"/>

    </wsdl:port>

  </wsdl:service>

</wsdl:definitions>

客户端调用:
<?php

$soap = new SoapClient('http://localhost/interface/soap.wsdl');

echo $soap->Add(1,2);

?>

二、不用wsdl文件

服务器端:

<?php

class service

{

  public function HelloWorld()

   {

      return  "Hello";

   }

  public  function Add($a,$b)

   {

      return $a+$b;

   }

}

$server=new SoapServer(null,array('uri' => "abcd"));

$server->setClass("service");

$server->handle();

?>

客户端:
<?php

try{

 $soap = new SoapClient(null,array(

   "location" => "http://localhost/interface/soap.php",

   "uri"      => "abcd",  //资源描述符服务器和客户端必须对应

   "style"    => SOAP_RPC,

   "use"      => SOAP_ENCODED

      ));
 echo $soap->Add(1,2);

}catch(Exction $e){

 echo print_r($e->getMessage(),true);

}

?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
Linux下手动编译安装PHP扩展的例子分享
Jul 15 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 PHP
php实现过滤UBB代码的类
Mar 12 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
php简单生成随机数的方法
Jul 30 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
PHP实现上传图片到 zimg 服务器
Oct 19 PHP
PHP用户验证和标签推荐的简单使用
Oct 31 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
php中socket的用法详解
Oct 24 #PHP
PHP利用header跳转失效的解决方法
Oct 24 #PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 #PHP
php cookie名使用点号(句号)会被转换
Oct 23 #PHP
php格式化时间戳显示友好的时间实现思路及代码
Oct 23 #PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 #PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 #PHP
You might like
PHP mb_convert_encoding 获取字符串编码类型实现代码
2009/04/26 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
smarty模板引擎从配置文件中获取数据的方法
2015/01/22 PHP
PHP开发注意事项总结
2015/02/04 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
jQuery 使用手册(二)
2009/09/23 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
vue组件间通信解析
2017/03/01 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
python查找第k小元素代码分享
2013/12/18 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
对Python 内建函数和保留字详解
2018/10/15 Python
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
户外亲子活动策划方案
2014/02/07 职场文书
采购经理岗位职责
2014/02/16 职场文书
房屋出租协议书
2014/04/10 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
绿色校园广播稿
2014/10/13 职场文书
2014年宣传工作总结
2014/11/18 职场文书
师德标兵事迹材料
2014/12/19 职场文书
工作失误检讨书
2015/01/26 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
CSS的calc函数用法小结
2022/06/25 HTML / CSS