当前位置:Gxlcms > PHP教程 > SOAP简单例子

SOAP简单例子

时间:2021-07-01 10:21:17 帮助过:23人阅读

  
<?php  
  $client = new SoapClient('http://www.phptest.com/soap/soap_server.php?WSDL');  
  //$client = new SoapClient('http://localhost/php/soap/math.wsdl');  
  try {  
    $result = $client->div(10, 2); // will cause a Soap Fault if divide by zero  
    print "The answer is: $result";  
  } catch(SoapFault $e) {  
    print "Sorry an error was caught executing your request: {$e->getMessage()}";  
  }  
  
?>  
 
soap_server.php
Php代码  
<?php  
  
class math {  
  
  public function add($a, $b) {  
    return $a + $b;  
  }  
    
  public function div($a, $b) {  
    if($b == 0) {  
      throw new SoapFault(-1, "Cannot divide by zero!");  
    }  
    return $a / $b;  
  }    
}  
$server = new SoapServer('math.wsdl', array('soap_version' => SOAP_1_2));  
$server->setClass("math");  
$server->handle();  
    
?>  
 
math.wsdl (可以通过zend studio生成)
Xml代码  
<?xml version='1.0' encoding='UTF-8'?>  
  
<!-- WSDL file generated by Zend Studio. -->  
  
<definitions name="math" targetNamespace="urn:math" xmlns:typens="urn:math" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">  
    <message name="add">  
        <part name="a" type="xsd:integer"/>  
        <part name="b" type="xsd:integer"/>  
    </message>  
    <message name="addResponse">  
        <part name="addReturn" type="xsd:integer"/>  
    </message>  
    <message name="div">  
        <part name="a" type="xsd:integer"/>  
        <part name="b" type="xsd:integer"/>  
    </message>  
    <message name="divResponse">  
        <part name="divReturn" type="xsd:double"/>  
    </message>  
    <portType name="mathPortType">  
        <documentation>  
            A simple math utility class  
        </documentation>  
        <operation name="add">  
            <documentation>  
                Add two integers together  
            </documentation>  
            <input message="typens:add"/>  
            <output message="typens:addResponse"/>  
        </operation>  
        <operation name="div">  
            <documentation>  
                Div two integers from each other  
            </documentation>  
            <input message="typens:div"/>  
            <output message="typens:divResponse"/>  
        </operation>  
    </portType>  
    <binding name="mathBinding" type="typens:mathPortType">  
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>  
        <operation name="add">  
            <soap:operation soapAction="urn:mathAction"/>  
            <input>  
                <soap:body namespace="urn:math" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>  
            </input>  
            <output>  
                <soap:body namespace="urn:math" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>  
            </output>  
        </operation>  
        <operation name="div">  
            <soap:operation soapAction="urn:mathAction"/>  
            <input>  
                <soap:body namespace="urn:math" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>  
            </input>  
            <output>  
                <soap:body namespace="urn:math" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>  
            </output>  
        </operation>  
    </binding>  
    <service name="mathService">  
        <port name="mathPort" binding="typens:mathBinding">  
            <soap:address location="http://www.phptest.com/soap/soap_server.php"/>  
        </port>  
    </service>  
</definitions>

人气教程排行