PHP中soap的使用例子

简介: PHP 使用soap有两种方式。 一、用wsdl文件 服务器端。 资源描述文件,可以用工具(zend studio)生成。其实就是一个xml文件。 ...
PHP 使用soap有两种方式。

一、用wsdl文件

服务器端。

<?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>

      			<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
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
			   ));

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

  

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
4天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
Linux PHP 网络架构
linux carry php Soap 扩展
前言 今天又出现下问题了需要解决如下: 报错信息是没有soap这个扩展! 解决问题如图所示: cd php-5.6.2/ext/soap/ /usr/local/php5/bin/phpize # 进入phpize 开始编译安装  .
988 0
|
PHP Apache 网络架构
|
PHP C# 网络架构
php 如何利用 soap调用.Net的WebService asmx文件
原文:php 如何利用 soap调用.Net的WebService asmx文件 最近,帮一个同行测试用.net写的WebService接口,C#调用通过,现在需要测试一下php版本对它的调用,经过各种探索, 相关的PHP调用webservice的过程如下: 1.
1416 0
|
PHP C# 网络架构
PHP使用SOAP调用.net的WebService数据
需要和一个.net系统进行数据交换,对方提供了一个WebService接口,使用PHP如何调用这个数据呢,下面就看看使用SOAP调用的方法吧 这个与一般的PHP POST或GET传值再查库拿数据的思路有点不一样,需要用到SOAP模块,处理方法也很简单,就是有一些需要注意的事情。
1405 0
|
PHP 网络架构
利用PHP SOAP实现WEB SERVICE
php有两个扩展可以实现web service,一个是NuSoap,一个是php 官方的soap扩展,由于soap是官方的,所以我们这里以soap来实现web service.由于默认是没有打开soap扩展的,所以自己先看一下soap扩展有没有打开。
840 0
|
PHP 网络架构 数据格式
利用PHP SOAP扩展实现简单Web Services
原文:利用PHP SOAP扩展实现简单Web Services WebServices能干什么? WebServices 可以将应用程序转换为网络应用程序。 通过使用 WebServices,您的应用程序可以向全世界发布信息,或提供某项功能。
1083 0
|
PHP 网络架构 数据格式
PHP中soap的使用例子
原文:PHP中soap的使用例子 PHP 使用soap有两种方式。 一、用wsdl文件 服务器端。 资源描述文件,可以用工具(zend studio)生成。其实就是一个xml文件。 ...
825 0