当前位置:首页 > PHP教程 > php应用 > 列表

PHP中soap的用法实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-18 22:02:33 浏览: 评论:0 

这篇文章主要介绍了PHP中soap的用法,实例讲述了PHP使用soap的两种方式,具有一定的参考借鉴价值,需要的朋友可以参考下

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

PHP 使用soap有两种方式。

一、用wsdl文件

服务器端:

  1. <?php 
  2. class service 
  3.   public function HelloWorld() 
  4.    { 
  5.       return  "Hello"
  6.    } 
  7.   public  function Add($a,$b
  8.    { 
  9.       return $a+$b
  10.    } 
  11. $server=new SoapServer('soap.wsdl',array('soap_version' => SOAP_1_2)); 
  12. $server->setClass("service"); 
  13. $server->handle(); 
  14. ?> 

资源描述文件,可以用工具(zend studio)生成。其实就是一个xml文件。

代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <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/"> 
  3.   <wsdl:types> 
  4.     <xsd:schema targetNamespace="http://localhost/interface/"> 
  5.       <xsd:element name="HelloWorld"> 
  6.         <xsd:complexType> 
  7.           <xsd:sequence> 
  8.             <xsd:element name="in" type="xsd:string"/> 
  9.           </xsd:sequence> 
  10.         </xsd:complexType> 
  11.       </xsd:element> 
  12.       <xsd:element name="HelloWorldResponse"> 
  13.         <xsd:complexType> 
  14.           <xsd:sequence> 
  15.             <xsd:element name="out" type="xsd:string"/> 
  16.           </xsd:sequence> 
  17.         </xsd:complexType> 
  18.       </xsd:element> 
  19.       <xsd:element name="Add"> 
  20.        <xsd:complexType> 
  21.         <xsd:sequence> 
  22.          <xsd:element name="in" type="xsd:int"></xsd:element> 
  23.         </xsd:sequence> 
  24.        </xsd:complexType> 
  25.       </xsd:element> 
  26.       <xsd:element name="AddResponse"> 
  27.        <xsd:complexType> 
  28.         <xsd:sequence> 
  29.          <xsd:element name="out" type="xsd:int"></xsd:element> 
  30.         </xsd:sequence> 
  31.        </xsd:complexType> 
  32.       </xsd:element> 
  33.     </xsd:schema> 
  34.   </wsdl:types> 
  35.    <wsdl:message name="AddRequest">    <wsdl:part name="a" type="xsd:int"></wsdl:part> 
  36.    <wsdl:part name="b" type="xsd:int"></wsdl:part> 
  37.   </wsdl:message> 
  38.   <wsdl:message name="AddResponse"> 
  39.    <wsdl:part name="c" type="xsd:int"></wsdl:part> 
  40.   </wsdl:message> 
  41.   <wsdl:portType name="TestSoap">     <wsdl:operation name="Add"> 
  42.      <wsdl:input message="tns:AddRequest"></wsdl:input> 
  43.      <wsdl:output message="tns:AddResponse"></wsdl:output> 
  44.     </wsdl:operation> 
  45.   </wsdl:portType> 
  46.   <wsdl:binding name="soapSOAP" type="tns:TestSoap"> 
  47.    <soap:binding style="document" 
  48.     transport="http://schemas.xmlsoap.org/soap/http" /> 
  49.    <wsdl:operation name="Add"> 
  50.     <soap:operation soapAction="http://localhost/interface/Add" /> 
  51.     <wsdl:input> 
  52.      <soap:body use="literal" 
  53.       namespace="http://localhost/interface/" /> 
  54.     </wsdl:input> 
  55.     <wsdl:output> 
  56.      <soap:body use="literal" 
  57.       namespace="http://localhost/interface/" /> 
  58.     </wsdl:output> 
  59.    </wsdl:operation> 
  60.   </wsdl:binding> 
  61.   <wsdl:service name="TestSoap"> 
  62.     <wsdl:port binding="tns:soapSOAP" name="soapSOAP"> 
  63.       <soap:address location="http://localhost/interface/myservice.php"/> 
  64.     </wsdl:port> 
  65.   </wsdl:service> 
  66. </wsdl:definitions> 

客户端调用:

  1. <?php 
  2. $soap = new SoapClient('http://localhost/interface/soap.wsdl'); 
  3. echo $soap->Add(1,2); 
  4. ?> 

二、不用wsdl文件

服务器端:

  1. <?php 
  2. class service 
  3.   public function HelloWorld() 
  4.    { 
  5.       return  "Hello"
  6.    } 
  7.   public  function Add($a,$b
  8.    { 
  9.       return $a+$b
  10.    } 
  11. $server=new SoapServer(null,array('uri' => "abcd")); 
  12. $server->setClass("service"); 
  13. $server->handle(); 
  14. ?> 

客户端:

  1. <?php 
  2. try{ 
  3.  $soap = new SoapClient(null,array
  4.    "location" => "http://localhost/interface/soap.php"
  5.    "uri"      => "abcd",  //资源描述符服务器和客户端必须对应 
  6.    "style"    => SOAP_RPC, 
  7.    "use"      => SOAP_ENCODED 
  8.       ));//www.phpfensi.com 
  9.  echo $soap->Add(1,2); 
  10. }catch(Exction $e){ 
  11.  echo print_r($e->getMessage(),true); 
  12. ?> 

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

Tags: soap

分享到: