1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP中soap的用法实例

作者:用户 来源:互联网 时间:2017-12-01 17:13:21

实例

PHP中soap的用法实例 - 摘要: 本文讲的是PHP中soap的用法实例,本文实例讲述了PHP中soap的用法,分享给大家供大家参考。具体用法分析如下:PHP 使用soap有两种方式。一、用wsdl文件服务器端:<?phpclass service{ public function HelloWorld(

本文实例讲述了PHP中soap的用法,分享给大家供大家参考。具体用法分析如下:

PHP 使用soap有两种方式。

一、用wsdl文件

服务器端:

<?phpclass service{  public function HelloWorld()   {      return  "Hello";   }  public  function Add($a,$b)   {      return $a+$b;   }}$server=new SoapServer('soap.wsdl',array('soap_version' => SOAP_1_2));$server->setClass("service");$server->handle();?>


资源描述文件,可以用工具(zend studio)生成。其实就是一个xml文件。

<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions xmlns: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:schema targetNamespace="http://localhost/interface/">      <xsd:element name="HelloWorld"><xsd:complexType>  <xsd:sequence>    <xsd:element name="in" type="xsd:string"/>  </xsd:sequence></xsd:complexType>      </xsd:element>      <xsd:element name="HelloWorldResponse"><xsd:complexType>  <xsd:sequence>    <xsd:element name="out" type="xsd:string"/>  </xsd:sequence></xsd:complexType>      </xsd:element>      <xsd:element name="Add">       <xsd:complexType><xsd:sequence> <xsd:element name="in" type="xsd:int"></xsd:element></xsd:sequence>       </xsd:complexType>      </xsd:element>      <xsd:element name="AddResponse">       <xsd:complexType><xsd:sequence> <xsd:element name="out" type="xsd:int"></xsd:element></xsd:sequence>       </xsd:complexType>      </xsd:element>    </xsd:schema>  </wsdl:types>   <wsdl:message name="AddRequest">    <wsdl:part name="a" type="xsd:int"></wsdl:part>   <wsdl:part name="b" type="xsd:int"></wsdl:part>  </wsdl:message>  <wsdl:message name="AddResponse">   <wsdl:part name="c" type="xsd:int"></wsdl:part>  </wsdl:message>  <wsdl:portType name="TestSoap">     <wsdl:operation name="Add">     <wsdl:input message="tns:AddRequest"></wsdl:input>     <wsdl:output message="tns:AddResponse"></wsdl:output>    </wsdl:operation>  </wsdl:portType>  <wsdl:binding name="soapSOAP" type="tns:TestSoap">   <soap:binding style="document"    transport="http://schemas.xmlsoap.org/soap/http" />   <wsdl:operation name="Add">    <soap:operation soapAction="http://localhost/interface/Add" />    <wsdl:input>     <soap:body use="literal"      namespace="http://localhost/interface/" />    </wsdl:input>    <wsdl:output>     <soap:body use="literal"      namespace="http://localhost/interface/" />    </wsdl:output>   </wsdl:operation>  </wsdl:binding>  <wsdl:service name="TestSoap">    <wsdl:port binding="tns:soapSOAP" name="soapSOAP">      <soap:address location="http://localhost/interface/myservice.php"/>    </wsdl:port>  </wsdl:service></wsdl:definitions>


客户端调用:

<?php$soap = new SoapClient('http://localhost/interface/soap.wsdl');echo $soap->Add(1,2);?>


二、不用wsdl文件
服务器端:

<?phpclass service{  public function HelloWorld()   {      return  "Hello";   }  public  function Add($a,$b)   {      return $a+$b;   }}$server=new SoapServer(null,array('uri' => "abcd"));$server->setClass("service");$server->handle();?>


客户端:

<?phptry{ $soap = new SoapClient(null,array(   "location" => "http://localhost/interface/soap.php",   "uri"      => "abcd",  //资源描述符服务器和客户端必须对应   "style"    => SOAP_RPC,   "use"      => SOAP_ENCODED      )); echo $soap->Add(1,2);}catch(Exction $e){ echo print_r($e->getMessage(),true);}?>

希望本文所述对大家的PHP程序设计有所帮助。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索实例 ,以便于您获取更多的相关知识。