当前位置: 首页 > 图文教程 > 网络编程 > PHP > 连载4:利用PHP创建由Oracle驱动的SOAP服务

PHP
php ignore_user_abort与register_shutdown_function 使用方法
PHP写MySQL数据 实现代码
phpmyadmin 访问被拒绝的真实原因
PHP 程序员也要学会使用“异常”
php MYSQL 数据备份类
PHP 类型转换函数intval
php 图像函数大举例(非原创)
PHP 输出缓存详解
PHP COOKIE设置为浏览器进程
ie6 动态缩略图不显示的原因
php 将bmp图片转为jpg等其他任意格式的图片
discuz7 phpMysql操作类
一个php Mysql类 可以参考学习熟悉下
php 分页函数multi() discuz
学习discuz php 引入文件的方法DISCUZ_ROOT
php fckeditor 调用的函数
mysql 性能的检查和优化方法
PHP 高级课程笔记 面向对象
PHP 多进程 解决难题
php 404错误页面实现代码

连载4:利用PHP创建由Oracle驱动的SOAP服务


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 169 ::
收藏到网摘: n/a

《连载1:利用PHP创建由Oracle驱动的SOAP服务》

《连载2:利用PHP创建由Oracle 驱动的SOAP 服务》

《连载3:利用PHP创建由Oracle驱动的SOAP服务》

用PHP创建SOAP客户端
前面已经说明了如何使用 PHP 创建 SOAP 服务,下面我们来看一下如何创建 SOAP 客户端,以供您的服务器与之通信。
尽管使用 PHP SOAP 实施通过 SOAP 执行远程过程调用的方法有很多,但我们建议的方法是使用 WSDL 文档。您已经生成了该文档以使 SOAP 服务运行,因此该文档已经存在。

要使用 PHP 创建 SOAP 客户端,您必须创建一个 SoapClient 类的实例,该类具有以下构造函数:

$client = new SoapClient($wsdl [, $options]);

对于 SoapServer 类,$wsdl 参数是要访问服务的 WSDL 文档的位置,可选参数 $options 是配置客户端连接的一组键/值对。以下是一些可用选项(请参见 www.php.net/ 以获得完整列表):
soap_version:要使用的 SOAP 协议版本,其值为常量 SOAP_1_1 或 SOAP_1_2
login:如果在 SOAP 服务器上使用 HTTP 身份验证,这是要使用的登录名
password:如果在 SOAP 服务器上使用 HTTP 身份验证,这是要使用的密码
proxy_host:如果通过代理服务器连接,这是服务器的地址
proxy_port:如果通过代理服务器连接,这是代理监听的端口
proxy_login:如果通过代理服务器连接,这是登录时使用的用户名
proxy_password:如果通过代理服务器连接,这是登录时使用的密码
local_cert:如果连接到一个通过安全 HTTP (https) 通信的 SOAP 服务器,这是本地认证文件的位置
passphrase:与 local_cert 结合使用,以提供认证文件的密码短语(如果有)
compression:如果设置为 true,PHP 将尝试使用压缩的 HTTP 请求与 SOAP 服务器通信
classmap:将 WSDL 数据类型映射到 PHP 类以便在客户端使用的一组键/值对
如果 PHP 中的 SOAP 客户端通过 WSDL 文档实例化,就可以使用返回的客户端对象调用在 SOAP 服务器上公开的方法(就好像它们是自带 PHP 调用),并处理任何可能作为原生 PHP 异常发生的 SOAP 错误。例如,返回到原始 math SOAP 服务示例,以下是一个完整的 PHP SOAP 客户端:
<?php

    $client = new SoapClient(“http://www.example.com/math.wsdl”);
   
    try {
        $result = $client->div(10,rand(0,5); // will cause a Soap Fault if divide by zero
        print “The answer is: $result”;
    } catch(SoapFault $f) {
        print “Sorry an error was caught executing your request: {$e->getMessage()}”;
    }
?>


正如您看到的那样,使用 SoapClient 类访问 SOAP 服务(无论它们是否在 PHP 中实施)很简单。实际上,通过 SOAP 服务为您的书籍数据库创建一个基于 Web 的管理系统是件轻而易举的事!如下所示,与让查询接口直接与 SOAP 服务交互相比,开发这个简单查询接口的逻辑和界面明显需要更多的编码工作。


 <HTML>
<HEAD><TITLE>Oracle / SOAP Example by John Coggeshall</TITLE></HEAD>
<BODY>
<?php

$client = new SoapClient("bookman.wsdl");

try {
 
 switch(@$_GET['mode']) {
  
  case 'title':
   
   if(!empty($_GET['title'])) {
    $isbns = $client->findBookISBNByTitle($_GET['title']); 
   } else {
    print "<B>Error:</B> You must specify at a title fragment!BR/>";
   }
   break;
  case 'author':
   
   if(!empty($_GET['author'])) {
    $isbns = $client->findBookISBNByAuthor($_GET['author']);
   } else {
    print "<B>Error:</B> You must specify the author to search!<BR/>";
   }
   break;
  default:
   $isbns = $client->listAllBooks();
 }

 print "<TABLE WIDTH='600'><TR><TD>ISBN</TD><TD>Author</TD>";
     print "<TD>Title</TD>&l