willeager 发表于 2013-1-25 03:20:14

SOAP简单例子

soap_client.php
<?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
<?phpclass 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 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>  
 
 
 
 
页: [1]
查看完整版本: SOAP简单例子