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

PHP
php 远程图片保存到本地的函数类
php 破解防盗链图片函数
快速开发一个PHP扩展图文教程
PHP6 mysql连接方式说明
php 进度条实现代码
php discuz 主题表和回帖表的设计
php 无限级缓存的类的扩展
php adodb操作mysql数据库
php FPDF类库应用实现代码
sourcesafe管理phpproj文件的补充说明(downmoon)
AspNetAjaxPager,Asp.Net通用无刷新Ajax分页控件,支持多样式多数据绑定
php一句话cmdshell新型 (非一句话木马)
php 木马的分析(加密破解)
PHP 数组入门教程小结
php 方便水印和缩略图的图形类
PHP加速 eAccelerator配置和使用指南
PHP 组件化编程技巧
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
两个强悍的php 图像处理类1
PHP 数据库 常见问题小结

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 111 ::
收藏到网摘: 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