PHP - 使用SOAP实现WEB SERVICE

[文章摘自:http://www.cnblogs.com/chance1/archive/2009/04/08/1431949.html。实例部分做了改动。]

php有两个扩展可以实现web service,一个是NuSoap,一个是php 官方的soap扩展,由于soap是官方的,所以我们这里以soap来实现web service.由于默认是没有打开soap扩展的,所以自己先看一下soap扩展有没有打开。

 在soap编写web service的过程中主要用到了SoapClient,SoapServer,SoapFault三个类。

SoapClient类

这个类用来使用Web services。SoapClient类可以作为给定Web services的客户端。
它有两种操作形式:

* WSDL 模式

* Non-WSDL 模式

在WSDL模式中,构造器可以使用WSDL文件名作为参数,并从WSDL中提取服务所使用的信息。

non-WSDL模式中使用参数来传递要使用的信息。

SoapServer类

这个类可以用来提供Web services。与SoapClient类似,SoapServer也有两种操作模式:WSDL模式和non-WSDL模式。这两种模式的意义跟 SoapClient的两种模式一样。在WSDL模式中,服务实现了WSDL提供的接口;在non-WSDL模式中,参数被用来管理服务的行为。

在SoapServer类的众多方法中,有三个方法比较重要。它们是SoapServer::setClass(),SoapServer::addFunction()和SoapServer::handle()。 

下面给出实例:

server.php

<?php
$s = new SoapServer(null, array("location"=>"http://localhost/codeLab/soap/server.php", "uri"=>"server.php"));
$s->setClass("PersonInfo");
$s->handle();

Class PersonInfo
{
	/**
	* 返回姓名
	* @return string 
	*
	*/
	public function getName($name)
	{
		return "My Name is {$name}";
	}
}

client.php

<?php
try
{
	// If working in non-WSDL mode, 
	// the location and uri options must be set, 
	// where location is the URL of the SOAP server to send the request to, 
	// and uri is the target namespace of the SOAP service. 
	$soap = new SoapClient(null, array(
		'location' => "http://localhost/codeLab/soap/server.php",
		'uri' => 'server.php',
		'login' => 'hywang',	// authName
		'password' => '123',	// authPassword
	));

	// 两种调用方式,直接调用方法,和用__soapCall间接调用
	$result1 = $soap->getName("hywang");
	$result2 = $soap->__soapCall("getName", array(
		new SoapParam("hywang", "userName")
	));
	
	echo $result1;
	echo "<br />";
	echo $result2;
}
catch(SoapFault $e)
{
	echo 'Error: '.$e->getMessage();
}
catch(Exception $e)
{
	echo 'Error: '.$e->getMessage();
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值