《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的用法實例》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/14422.html