>  기사  >  백엔드 개발  >  SOAP 간단한 예

SOAP 간단한 예

巴扎黑
巴扎黑원래의
2016-11-29 10:45:16999검색

  
<?php  
  $client = new SoapClient(&#39;http://www.phptest.com/soap/soap_server.php?WSDL&#39;);  
  //$client = new SoapClient(&#39;http://localhost/php/soap/math.wsdl&#39;);  
  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(&#39;math.wsdl&#39;, array(&#39;soap_version&#39; => SOAP_1_2));  
$server->setClass("math");  
$server->handle();  
    
?>  
 
math.wsdl (可以通过zend studio生成)
Xml代码  
<?xml version=&#39;1.0&#39; encoding=&#39;UTF-8&#39;?>  
  
<!-- 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>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.