加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中soap的用法实例

发布时间:2020-12-13 02:05:53 所属栏目:PHP教程 来源:网络整理
导读:《PHP实例:PHP中soap的用法实例》要点: 本文介绍了PHP实例:PHP中soap的用法实例,希望对您有用。如果有疑问,可以联系我们。 PHP编程 本篇章节讲解PHP中soap的用法,供大家参考研究.具体用法分析如下: PHP编程 PHP 使用soap有两种方式. PHP编程

《PHP实例:PHP中soap的用法实例》要点:
本文介绍了PHP实例:PHP中soap的用法实例,希望对您有用。如果有疑问,可以联系我们。

PHP编程本篇章节讲解PHP中soap的用法,分享给大家供大家参考.具体用法分析如下:

PHP编程PHP 使用soap有两种方式.

PHP编程一、用wsdl文件

PHP编程服务器端:

代码如下:
<?php
class 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>

PHP编程????? ???<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文件

PHP编程服务器端:

代码如下:
<?php
class 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();
?>

客户端:
代码如下:
<?php
try{
?$soap = new SoapClient(null,array(
???"location" => "http://localhost/interface/soap.php",
???"uri"????? => "abcd",? //资源描述符服务器和客户端必须对应
???"style"??? => SOAP_RPC,
???"use"????? => SOAP_ENCODED
????? ));

PHP编程?echo $soap->Add(1,2);
}catch(Exction $e){
?echo print_r($e->getMessage(),true);
}
?>

PHP编程希望本文所述对大家的PHP程序设计有所赞助.

欢迎参与《PHP实例:PHP中soap的用法实例》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读