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

2016-01-29 12:56 9 1 收藏

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

【 tulaoshi.com - PHP 】

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

用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<TITLEOracle / 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 "<BError:</B You must specify at a title fragment!BR/";
   }
   break;
  case 'author':
   
   if(!empty($_GET['author'])) {
    $isbns = $client-findBookISBNByAuthor($_GET['author']);
   } else {
    print "<BError:</B You must specify the author to search!<BR/";
   }
   break;
  default:
   $isbns = $client-listAllBooks();
 }

 print "<TABLE WIDTH='600'<TR<TDISBN</TD<TDAuthor</TD";
     print "<TDTitle</TD&l

来源:http://www.tulaoshi.com/n/20160129/1488190.html

延伸阅读
标签: PHP
  <? //【警告】:未经许可请勿随便修改 //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ //    // 【文件名】:        &...
    在Oracle 9i中可以方便的把数据导出为文件,或者从文件导入。通过Oracle的管理服务器(Oracle Management Server,OMS)可以方便的实现,整个操作过程中有很多地方需要解释说明,但是完整的指导资料不多。各大论坛上很多所谓的高手,对该主题的回答往往是,高手是不用OMS的,用exp/impl吧。如果你执意追问,他多半会告诉你...
标签: PHP
四、基于XML_RPC的Web服务 利用XML_RPC构造和使用服务是很方便的。企业为自己提供的各种服务部署XML_RPC服务器,用户、客户软件和客户企业就可以使用这种服务构造出高端服务或者面向最终用户的应用。这种提供更有效、廉价和优质服务的竞争将极大地提高应用服务的质量。 但这里还存在一些问题有待解决,例如怎样编目、索引...
标签: Web开发
  未来的Web将是以服务为中心的Web,XML_RPC标准使得编写和应用服务变得非常简单。本文介绍XML_RPC标准及其PHP实现,并通过实例示范了如何在PHP中开发XML_RPC服务和客户程序。 一、服务式Web 从内容提供商所采用的简单方法到UDDI(Universal Description,Discovery and Integration)的未来构想,业界已经有大量关于“服务式Web”的...
标签: Web开发
  四、基于XML_RPC的Web服务 利用XML_RPC构造和使用服务是很方便的。企业为自己提供的各种服务部署XML_RPC服务器,用户、客户软件和客户企业就可以使用这种服务构造出高端服务或者面向最终用户的应用。这种提供更有效、廉价和优质服务的竞争将极大地提高应用服务的质量。 但这里还存在一些问题有待解决,例如怎样编目、索引、搜索Web...

经验教程

41

收藏

71
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部