PHP中soap的用法实例
本文实例讲述了PHP中soap的用法,分享给大家供大家参考。具体用法分析如下:
PHP使用soap有两种方式。
一、用wsdl文件
服务器端:
<?php classservice { publicfunctionHelloWorld() { return "Hello"; } public functionAdd($a,$b) { return$a+$b; } } $server=newSoapServer('soap.wsdl',array('soap_version'=>SOAP_1_2)); $server->setClass("service"); $server->handle(); ?>
资源描述文件,可以用工具(zendstudio)生成。其实就是一个xml文件。
<?xmlversion="1.0"encoding="UTF-8"?> <wsdl:definitionsxmlns: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:schematargetNamespace="http://localhost/interface/"> <xsd:elementname="HelloWorld"> <xsd:complexType> <xsd:sequence> <xsd:elementname="in"type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:elementname="HelloWorldResponse"> <xsd:complexType> <xsd:sequence> <xsd:elementname="out"type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:elementname="Add"> <xsd:complexType> <xsd:sequence> <xsd:elementname="in"type="xsd:int"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:elementname="AddResponse"> <xsd:complexType> <xsd:sequence>
<xsd:elementname="out"type="xsd:int"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:messagename="AddRequest"> <wsdl:partname="a"type="xsd:int"></wsdl:part> <wsdl:partname="b"type="xsd:int"></wsdl:part> </wsdl:message> <wsdl:messagename="AddResponse"> <wsdl:partname="c"type="xsd:int"></wsdl:part> </wsdl:message> <wsdl:portTypename="TestSoap"> <wsdl:operationname="Add"> <wsdl:inputmessage="tns:AddRequest"></wsdl:input> <wsdl:outputmessage="tns:AddResponse"></wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:bindingname="soapSOAP"type="tns:TestSoap"> <soap:bindingstyle="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operationname="Add"> <soap:operationsoapAction="http://localhost/interface/Add"/> <wsdl:input> <soap:bodyuse="literal" namespace="http://localhost/interface/"/> </wsdl:input> <wsdl:output> <soap:bodyuse="literal" namespace="http://localhost/interface/"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:servicename="TestSoap"> <wsdl:portbinding="tns:soapSOAP"name="soapSOAP"> <soap:addresslocation="http://localhost/interface/myservice.php"/> </wsdl:port> </wsdl:service> </wsdl:definitions>