php的SOAP安装使用

SOAP:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。php默认提供了专门用于soap操作的扩展库,我们只需要在php.ini中把php_soap.dll的扩展包加上即可,然后就能很方便地实现soap版本的远程过程调用。


A,不使用wsdl文件(使用方便,不需要编写繁琐的wsdl文件,定义每个属性和接口的类型返回都是件麻烦事,虽然zend工具可以提供自动生成)
服务端server.php

<?php
	class libClass
	{
		public function Say()
		{
			return "ciaos";
		}
		public function Add($a, $b)
		{
			return $a + $b;
		}
		public function Com($s1, $s2)
		{
			return $s1 . $s2;
		}
	}
	$server=new SoapServer(null,array('uri' => "abcd"));
	$server->setClass("libClass");
	$server->handle();
?>
客户端client.php
<?php
	try{
		$svc = new SoapClient(null,array(
				"location" => "http://localhost/server.php",
				"uri"      => "abcd",  //资源描述符服务器和客户端必须对应
				"style"    => SOAP_RPC,
				"use"      => SOAP_ENCODED
				   ));

		echo $svc->Say();
		echo $svc->Add(3,4);
		echo $svc->Com("Hello","World");
		
	}catch(Exction $e){

		echo print_r($e->getMessage(),true);

	}
?>
用浏览器访问client.php,可以看到如下结果(能这么简单实现远程过程调用实在太好用了):

ciaos7HelloWorld

B,使用wsdl文件Web Services Description Language),soap为简单对象访问协议,既然是对象,则肯定有属性和行为,这些内容就是在wsdl文件中给以描述的。

我这里没有zend for eclipse,没法简单地自动生成wsdl文件,就不做这个测试了,大致效果是一样的。

和不使用wsdl文件的区别我觉得使用wsdl文件描述的话会规范一点,跨语言调用也更容易。而且wsdl是一个标准的xml描述,给别的开发者(尽管使用语言不一样)阅读也可很快了解到你提供的对象的行为和属性。


C,此外还可以使用 NuSoap扩展组件(这个组件没有扩展依赖),不过有可能和自带的php_soap.dll冲突,注释掉后者即可,如下面的示例程序(需下载NuSoap):

服务端server_nusoap.php

<?php
	require_once('./nusoap/lib/nusoap.php');
	
	$srv = new soap_server;
	
	$srv->register("Hello");
	
	function Hello($name)
	{
		return "Hello " . $name;
	}
	
	$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
	$srv->service($HTTP_RAW_POST_DATA);
?>
客户端client_nusoap.php

<?php
	require_once('./nusoap/lib/nusoap.php');
	
	$svc = new soapclient("http://localhost/server_nusoap.php");

	echo $svc->call("Hello", array("name" => "Ciaos"));
		
	if(NULL!=$svc->getError()){
		echo " error :", htmlentities($err,ENT_QUOTES) ;
	}
?>
浏览器访问客户端代码也可以看到服务调用成功。(nusoap是一个很复杂的项目,功能强大多种多样,我上面也只是一个简单的示例demo)

最后摘录一些百度百科上对SOAP优点的总结:

  • SOAP是简单的,客户端发送一个请求,调用相应对象,然后服务器返回结果,这些消息是XML格式,并且封装成符合HTTP协议的消息,符合路由器防火墙和代理服务器的要求。
  • SOAP可以相对平台,操作系统,目标模型和编程语言独立实现
  • 和编程语言无关,soap可以用任何语言完成,只要客户端发送正确的SOAP请求。
  • 与平台无关,可以在任何操作系统使用无需修改。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值