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>