利用PHP创建由Oracle驱动的SOAP服务(1)
2013-09-04 21:45
330 查看
能够通过 Web 服务为其他基于 Internet 的 Web 应用程序提供数据和功能正迅速成为重大开发中必不可或缺的组成部分。尽管 Oracle 提供了许多托管 Web 服务的方法,但这么做始终不是最有效的方法,特别是在已经使用 PHP 来开发 Web 应用程序的情况下。在本手册中,我将引导您使用 PHP 逐步开发 SOAP 客户端和服务器,并使用 Oracle 作为数据的后端。
要真正了解这个问题的答案,您需要了解PHP脚本执行的生命周期以及 Web 服务器对该生命周期的影响,本手册将从此开始逐步展开论述。
必需组件
出于本文的需要,您将使用一个非常简单的数据库后端,该数据库后端将在一个表中存储有关已发表书籍的某些基本信息,该表由以下 CREATE 语句表示:
CREATE TABLE books(isbn VARCHAR(32) PRIMARY KEY,author VARCHAR(50),title VARCHAR(50),price FLOAT);该表将充当 SOAP 服务器的数据源,而数据源又会根据需要将数据提供给一个或多个 SOAP 客户端。尽管在实际应用程序中,您的数据库可能比较复杂,但这里描述的方法仍然适用。
建立数据库(最好在其中放置一些虚拟数据)之后,您现在就可以深入了解用 PHP 开发 SOAP 服务器所涉及的内容了。
SOAP 服务在 PHP 中的工作方式
用 PHP 开发 SOAP 服务的选择有多种,所有方法都涉及到 SoapServer PHP 类。该类是所有基于 PHP 的 SOAP 服务的核心部分,其语法如下:
$server = new SoapServer($wsdl [, $options]);其中,$wsdl 是描述托管服务的 Web 服务描述语言 (WSDL) 文档的位置;$options 是一组键/值对,其中包含了在创建服务时需要考虑的所有设置选项。稍后,您将了解有关 WSDL 文档的更多内容;现在,我们来看一下在创建新的 SOAP 服务时可用的选项:
◆soap_version:与客户端通信时使用的 SOAP 协议版本。可能的选项是用于 SOAP 1.1 版的常量 SOAP_1_1 或用于 SOAP 1.2 版的 SOAP_1_2。
◆encoding:用于该 SOAP 服务的字符编码(即字符串 ISO-8859-1)。
◆actor:该 SOAP 服务的角色 URI。
◆classmap:将 WSDL 数据类型映射到 PHP 中的类名的一组键/值对本身。如果使用该选项,PHP 将根据 WSDL 中定义的类型将这些类呈现给连接客户端。
因此,要使用名为 bookman.wsdl 的 WSDL 文档创建一个使用 SOAP v1.2 协议的 SOAP 服务,您应该按如下方法构建服务器:
$server = new SoapServer(“bookman.wsdl”, array(‘soap_version’ => SOAP_1_2));该过程的下一步是创建服务方法。在 PHP 中,这可以使用两个主要方法完成。第一个(也是最灵活的)方法是使用 addFunction() 方法手动指定要托管在服务中的每个函数,并将函数名传递给该方法以公开到客户端:
function add($a, $b) {return $a + $b;}$server->addFunction(‘add’);您还可以通过提供一组函数名来添加多个函数:
function add($a, $b) {return $a + $b;}function sub($a, $b) {return $a - $b;}$server->addFunction(array(‘add’, ‘sub’));最后,您可以通过传递特殊常量 SOAP_FUNCTIONS_ALL 而非函数名来导出所有定义的函数,如下所示:
function add($a, $b) {return $a + $b;}function sub($a, $b) {return $a - $b;}$server->addFunction(SOAP_FUNCTIONS_ALL); 1
要真正了解这个问题的答案,您需要了解PHP脚本执行的生命周期以及 Web 服务器对该生命周期的影响,本手册将从此开始逐步展开论述。
必需组件
出于本文的需要,您将使用一个非常简单的数据库后端,该数据库后端将在一个表中存储有关已发表书籍的某些基本信息,该表由以下 CREATE 语句表示:
CREATE TABLE books(isbn VARCHAR(32) PRIMARY KEY,author VARCHAR(50),title VARCHAR(50),price FLOAT);该表将充当 SOAP 服务器的数据源,而数据源又会根据需要将数据提供给一个或多个 SOAP 客户端。尽管在实际应用程序中,您的数据库可能比较复杂,但这里描述的方法仍然适用。
建立数据库(最好在其中放置一些虚拟数据)之后,您现在就可以深入了解用 PHP 开发 SOAP 服务器所涉及的内容了。
SOAP 服务在 PHP 中的工作方式
用 PHP 开发 SOAP 服务的选择有多种,所有方法都涉及到 SoapServer PHP 类。该类是所有基于 PHP 的 SOAP 服务的核心部分,其语法如下:
$server = new SoapServer($wsdl [, $options]);其中,$wsdl 是描述托管服务的 Web 服务描述语言 (WSDL) 文档的位置;$options 是一组键/值对,其中包含了在创建服务时需要考虑的所有设置选项。稍后,您将了解有关 WSDL 文档的更多内容;现在,我们来看一下在创建新的 SOAP 服务时可用的选项:
◆soap_version:与客户端通信时使用的 SOAP 协议版本。可能的选项是用于 SOAP 1.1 版的常量 SOAP_1_1 或用于 SOAP 1.2 版的 SOAP_1_2。
◆encoding:用于该 SOAP 服务的字符编码(即字符串 ISO-8859-1)。
◆actor:该 SOAP 服务的角色 URI。
◆classmap:将 WSDL 数据类型映射到 PHP 中的类名的一组键/值对本身。如果使用该选项,PHP 将根据 WSDL 中定义的类型将这些类呈现给连接客户端。
因此,要使用名为 bookman.wsdl 的 WSDL 文档创建一个使用 SOAP v1.2 协议的 SOAP 服务,您应该按如下方法构建服务器:
$server = new SoapServer(“bookman.wsdl”, array(‘soap_version’ => SOAP_1_2));该过程的下一步是创建服务方法。在 PHP 中,这可以使用两个主要方法完成。第一个(也是最灵活的)方法是使用 addFunction() 方法手动指定要托管在服务中的每个函数,并将函数名传递给该方法以公开到客户端:
function add($a, $b) {return $a + $b;}$server->addFunction(‘add’);您还可以通过提供一组函数名来添加多个函数:
function add($a, $b) {return $a + $b;}function sub($a, $b) {return $a - $b;}$server->addFunction(array(‘add’, ‘sub’));最后,您可以通过传递特殊常量 SOAP_FUNCTIONS_ALL 而非函数名来导出所有定义的函数,如下所示:
function add($a, $b) {return $a + $b;}function sub($a, $b) {return $a - $b;}$server->addFunction(SOAP_FUNCTIONS_ALL); 1
相关文章推荐
- 一、利用Visual Studio 2010创建第一个基于服务和数据驱动的Silverlight应用程序
- 理解PHP依赖注入容器(dependency injection container)系列(四) Symfony服务容器:利用Builder创建服务
- 在PHP中利用wsdl创建标准webservice的实现代码 SoapDiscovery.class.php
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库
- 利用php soap实现web service
- 利用PL/SQL Developer工具在Oracle库中创建同名词Synonym的方法
- 利用Code First在MVC4中创建数据驱动应用程序
- 在PHP中利用wsdl创建标准webservice的实现代码
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库
- 创建单个oracle sde 服务
- Oracle——利用DBCA创建数据库
- php 利用 soap调用.Net的WebService asmx文件
- IBM的云平台Bluemix使用初体验——创建PHP Web 应用程序,添加并使用语言翻译服务
- 用oracle客户端的Net Manager创建服务(server)和监听(listener)
- 利用spring-ws 现实soap webservice服务
- 利用ORACLE 11g 新特性创建物理备库
- 利用XFire创建Web服务
- php利用curl上传文件到服务器(支持文件夹创建)
- PHP中利用XML技术构造远程服务
- 用pear::soap创建web服务的步骤