﻿<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[草山湖随笔]]></title> 
<link>http://www.idceye.com/blog/index.php</link> 
<description><![CDATA[Java PHP Flex Python Ajax CSS 编程 开源 学习 总结 分享]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[草山湖随笔]]></copyright>
<item>
<link>http://www.idceye.com/blog/post/536/</link>
<title><![CDATA[PHP6发布计划已写入进程令人期待]]></title> 
<author>admin &lt;quan.zhao@163.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Mon, 21 Jun 2010 01:35:22 +0000</pubDate> 
<guid>http://www.idceye.com/blog/post/536/</guid> 
<description>
<![CDATA[ 
	　　PHP下一个备受关注的版本6.0，已经进入snapshot阶段，不久即将发布。PHP 6.0将包含很多新的特性、语法改进，会让面向对象编程更加简单，另外还有很多重要的改进，比如Unicode的核心支持，这将让PHP更适合全球范围支 持和更加的健康发展。PHP是已经风靡全球的开源脚本语言，在数以万计的网站上运行着,PHP 6.0将完全向前兼容,同时增加许多令人激动的特性。 <br/><a href="http://www.idceye.com/blog/attachment.php?fid=383" target="_blank"><img src="http://www.idceye.com/blog/attachment.php?fid=383" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　更加好的Unicode支持<br/><br/>　　NameSpace:名字空间,将更好的避免在函数及类之间的变量名冲突。<br/><br/>　　令人激动的Web 2.0特性<br/><br/>　　SOAP: 简单对象访问协议 (SOAP:Simple Object Access Protocol)SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。<br/><br/>　　XML:从PHP 5.1版本开始,XMLReader和XMLWriter就已经包含在PHP内核,它可以让它可以让XML编程更加轻松。<br/><br/>　　当然，除了增加新的特性，一些会给系统带来不稳定因素和安全隐患的特性也将被取消，以下是取消的内容列表：<br/><br/>　　magic_quotes<br/>　　register_globals<br/>　　register_long_arrays<br/>　　safe_mode<br/>　　magic_quotes<br/><br/>Tags - <a href="http://www.idceye.com/blog/tags/%25E5%258F%2591%25E5%25B8%2583%25E8%25AE%25A1%25E5%2588%2592/" rel="tag">发布计划</a> , <a href="http://www.idceye.com/blog/tags/%25E8%25BF%259B%25E7%25A8%258B/" rel="tag">进程</a> , <a href="http://www.idceye.com/blog/tags/php6/" rel="tag">php6</a>
]]>
</description>
</item><item>
<link>http://www.idceye.com/blog/post/510/</link>
<title><![CDATA[drupal6 如何汉化]]></title> 
<author>admin &lt;quan.zhao@163.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Fri, 28 May 2010 14:49:54 +0000</pubDate> 
<guid>http://www.idceye.com/blog/post/510/</guid> 
<description>
<![CDATA[ 
	* 到<a href="http://drupal.org/project/zh-hans" target="_blank">http://drupal.org/project/zh-hans</a> 下载最新的中文汉化包。<br/>* 解压缩至本地，并将其中的modules、profiles、themes三个文件夹拷贝至drupal的根目录，提示是否覆盖，选择“是”。<br/>* 到 admin->site building->modules [admin/build/modules] 启用 Locale 模块。<br/>* 到 admin->site configuration->localization [admin/settings/locale]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 点 Add Language 连接，选择 Chinese, Simplified（简体中文）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 点 "add language"按钮，即可导入刚才拷贝的简体中文包。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. 到 admin/settings/language 目录下，将简体中文设为“Default”即可。<br/>
]]>
</description>
</item><item>
<link>http://www.idceye.com/blog/post/476/</link>
<title><![CDATA[BO-blog的robots.txt的推荐写法]]></title> 
<author>admin &lt;quan.zhao@163.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Wed, 03 Mar 2010 01:34:15 +0000</pubDate> 
<guid>http://www.idceye.com/blog/post/476/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;在BO-blog里面，一篇日志可以有5种URL写法，还有TAGS页面，分类页面，都有几种URL样式，并且这几种样式都能正确的访问，如果这些重复的页面因为某些原因被搜索引擎收录的话，有可能会被搜索引擎认为是在作弊，降低网站的权重。所以，必须限制一下搜索引擎的收录内容，这通过修改robots.txt文件来实现<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;我的boblog选择的是基于PHP的URL优化，那么我的URL的为 www.idceye.com/blog/read.php/220.htm和www.idceye.com/blog/free/mianfei.php，这样我们得防止www.idceye.com/blog/read.php?220这种URL样式的出现，因此得在robots.txt后面加上这一句：Disallow: /read.php?*&nbsp;&nbsp; 意思是不收录URL中带有read.php?的页面这样的话，就不会担心像www.idceye.com/blog/read.php?220这种不会被使用的URL被收录<br/><br/>&nbsp;&nbsp; 再就是分类页面。为了SEO，一般都给分类设置别名，URL样式为：http://www.idceye.com/blog/go.php/category/free-resources/，但是还有另一个URL地址可以访问，那就是http://www.idceye.com/blog/go.php/go.php/category/8/，这样的话，必须屏蔽这个地址，还是要用到robots.txt，在里面加入这一项Disallow: /go.php/category/8/，有多少个分类就写多少个<br/><br/>&nbsp;&nbsp; 最后就是如果没跟图片设置防盗链的话，最好是去掉Disallow: /attachment/这一项，让搜索引擎能收录你的图片。<br/><br/>robots.txt内容大致如下：<br/><br/>Disallow: /read.php?*<br/>Disallow: /go.php/category/0/<br/>Disallow: /go.php/category/1/<br/>Disallow: /go.php/category/2/<br/>Disallow: /go.php/category/3/<br/>Disallow: /go.php/category/4/<br/>Disallow: /go.php/category/5/<br/>Disallow: /go.php/category/6/<br/>Disallow: /go.php/category/7/<br/>Disallow: /go.php/category/8/<br/>Disallow: /go.php/category/9/<br/>Disallow: /go.php/category/10/<br/><br/>Tags - <a href="http://www.idceye.com/blog/tags/robots.txt/" rel="tag">robots.txt</a>
]]>
</description>
</item><item>
<link>http://www.idceye.com/blog/post/460/</link>
<title><![CDATA[PHP正则取出img标签中的图片名称]]></title> 
<author>admin &lt;quan.zhao@163.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Fri, 05 Feb 2010 07:15:52 +0000</pubDate> 
<guid>http://www.idceye.com/blog/post/460/</guid> 
<description>
<![CDATA[ 
	<div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'gdgfgsdfg&lt;img src=&quot;imge.jpg&quot;&gt;fsafasfd&lt;img src=&quot;imge2.jpg&quot;&gt;fsafasfd'</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$preg</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/&lt;img src=<span style="color: #000099; font-weight: bold;">\&quot;</span>(.+?)<span style="color: #000099; font-weight: bold;">\&quot;</span>.*?&gt;/&quot;</span><span style="color: #339933;">;</span> <br />
<a href="http://www.php.net/preg_match_all"><span style="color: #990000;">preg_match_all</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$preg</span><span style="color: #339933;">,</span><span style="color: #000088;">$content</span><span style="color: #339933;">,</span><span style="color: #000088;">$new_cnt</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$new_cnt</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp;</div><br/>Tags - <a href="http://www.idceye.com/blog/tags/%25E6%25AD%25A3%25E5%2588%2599%25E8%25A1%25A8%25E8%25BE%25BE%25E5%25BC%258F/" rel="tag">正则表达式</a>
]]>
</description>
</item><item>
<link>http://www.idceye.com/blog/post/457/</link>
<title><![CDATA[详解搜索引擎技术原理]]></title> 
<author>admin &lt;quan.zhao@163.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Tue, 02 Feb 2010 04:29:06 +0000</pubDate> 
<guid>http://www.idceye.com/blog/post/457/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;前段时间，看到有个朋友在用Google搜索引擎的程序，1G大小的源代码，看着都头大，就没有去用了。今天重新收集到一些开源搜索引擎系统介绍，包含开源Web搜索引擎和开源桌面搜索引擎，大家可以看看喜欢哪个，下载来玩玩。<br/><br/><span style="color: #0000FF;">Sphider</span><br/><br/>Sphider是一个轻量级，采用PHP开发的web spider和搜索引擎，使用mysql来存储数据。可以利用它来为自己的网站添加搜索功能。Sphider非常小,易于安装和修改，已经有数千网站在使用它。<br/><br/><span style="color: #0000FF;">RiSearch PHP</span><br/><br/>RiSearch PHP是一个高效，功能强大的搜索引擎，特别适用于中小型网站。RiSearch PHP非常快，它能够在不到1秒钟内搜索5000-10000个页面。RiSearch是一个索引搜索引擎,这就意味着它先将你的网站做索引并建立一个数据库来存储你网站所有页面的关键词以便快速搜索。Risearch是全文搜索引擎脚本,它把所有的关键词都编成一个文档索引除了配置文件里面的定义排除的关键词。 RiSearch使用经典的反向索引算法(与大型的搜索引擎相同),这就是为什么它会比其它搜索引擎快的原因。<br/><br/><span style="color: #0000FF;">PhpDig</span><br/><br/>PhpDig是一个采用PHP开发的Web爬虫和搜索引擎。通过对动态和静态页面进行索引建立一个词汇表。当搜索查询时，它将按一定的排序规则显示包含关键字的搜索结果页面。PhpDig包含一个模板系统并能够索引PDF,Word,Excel,和PowerPoint文档。PHPdig适用于专业化更强、层次更深的个性化搜索引擎，利用它打造针对某一领域的垂直搜索引擎是最好的选择。<br/><br/><span style="color: #0000FF;">OpenWebSpider</span><br/><br/>OpenWebSpider是一个开源多线程Web Spider（robot：机器人，crawler：爬虫)和包含许多有趣功能的搜索引擎。<br/><br/><span style="color: #0000FF;">Egothor</span><br/><br/>Egothor是一个用Java编写的开源而高效的全文本搜索引擎。借助Java的跨平台特性，Egothor能应用于任何环境的应用，既可配置为单独的搜索引擎，又能用于你的应用作为全文检索之用。<br/><br/><span style="color: #0000FF;">Nutch</span><br/><br/>Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。<br/><br/><span style="color: #0000FF;">Lucene</span><br/><br/>Apache Lucene是一个基于Java全文搜索引擎，利用它可以轻易地为Java软件加入全文搜寻功能。Lucene的最主要工作是替文件的每一个字作索引，索引让搜寻的效率比传统的逐字比较大大提高，Lucen提供一组解读，过滤，分析文件，编排和使用索引的API，它的强大之处除了高效和简单外，是最重要的是使使用者可以随时应自已需要自订其功能。<br/><br/><span style="color: #0000FF;">Oxyus</span><br/><br/>是一个纯java写的web搜索引擎。<br/><br/><span style="color: #0000FF;">BDDBot</span><br/><br/>BDDBot是一个简单的易于理解和使用的搜索引擎。它目前在一个文本文件（urls.txt）列出的URL中爬行，将结果保存在一个数据库中。它也支持一个简单的Web服务器，这个服务器接受来自浏览器的查询并返回响应结果。它可以方便地集成到你的Web站点中。<br/><br/><span style="color: #0000FF;">Zilverline</span><br/><br/>Zilverline是一个搜索引擎，它通过web方式搜索本地硬盘或intranet上的内容。Zilverline可以从PDF， Word， Excel， Powerpoint， RTF， txt， java， CHM，zip， rar等文档中抓取它们的内容来建立摘要和索引。从本地硬盘或intranet中查找到的结果可重新再进行检索。Zilverline支持多种语言其中包括中文。<br/><br/><span style="color: #0000FF;">XQEngine</span><br/><br/>XQEngine用于XML文档的全文本搜索引擎。利用XQuery做为它的前端查询语言。它能够让你查询XML文档集合通过使用关键字的逻辑组合。有点类似于Google与其它搜索引擎搜索HTML文档一样。XQEngine只是一个用Java开发的很紧凑的可嵌入的组件。<br/><br/><span style="color: #0000FF;">MG4J</span><br/><br/>MG4J可以让你为大量的文档集合构建一个被压缩的全文本索引，通过使内插编码（interpolative coding）技术。<br/><br/><span style="color: #0000FF;">JXTA Search</span><br/><br/>JXTA Search是一个分布式的搜索系统。设计用在点对点的网络与网站上。<br/><br/><span style="color: #0000FF;">YaCy</span><br/><br/>YaCy基于p2p的分布式Web搜索引擎。同时也是一个Http缓存代理服务器。这个项目是构建基于p2p Web索引网络的一个新方法。它可以搜索你自己的或全局的索引，也可以Crawl自己的网页或启动分布式Crawling等。<br/><br/><span style="color: #0000FF;">Red-Piranha</span><br/><br/>Red-Piranha是一个开源搜索系统，它能够真正”学习”你所要查找的是什么。Red-Piranha可作为你桌面系统（Windows，Linux与Mac）的个人搜索引擎，或企业内部网搜索引擎，或为你的网站提供搜索功能，或作为一个P2P搜索引擎，或与wiki结合作为一个知识/文档管理解决方案，或搜索你要的RSS聚合信息，或搜索你公司的系统（包括SAP，Oracle或其它任何Database/Data source），或用于管理PDF，Word和其它文档，或作为一个提供搜索信息的WebService或为你的应用程序（Web，Swing，SWT，Flash，Mozilla-XUL，PHP， Perl或c#/.Net）提供搜索后台等等。<br/><br/><span style="color: #0000FF;">LIUS</span><br/><br/>LIUS是一个基于Jakarta Lucene项目的索引框架。LIUS为Lucene添加了对许多文件格式的进行索引功能如：Ms Word，Ms Excel，Ms PowerPoint，RTF，PDF，XML，HTML，TXT，Open Office序列和JavaBeans.针对JavaBeans的索引特别有用当我们要对数据库进行索引或刚好用户使用持久层ORM技术如：Hibernate，JDO，Torque，TopLink进行开发时。<br/><br/><span style="color: #0000FF;">Apache Solr</span><br/><br/>Solr是一个高性能，采用Java5开发，基于Lucene的全文搜索服务器。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括：高效、灵活的缓存功能，垂直搜索功能，高亮显示搜索结果，通过索引复制来提高可用性，提供一套强大Data Schema来定义字段，类型和设置文本分析，提供基于Web的管理界面等。<br/><br/><span style="color: #0000FF;">Paoding</span><br/><br/>Paoding中文分词是一个使用Java开发的，可结合到Lucene应用中的，为互联网、企业内部网使用的中文搜索引擎分词组件。 Paoding填补了国内中文分词方面开源组件的空白，致力于此并希翼成为互联网网站首选的中文分词开源组件。 Paoding中文分词追求分词的高效率和用户良好体验。<br/><br/><span style="color: #0000FF;">Carrot2</span><br/><br/>Carrot2是一个开源搜索结果分类引擎。它能够自动把搜索结果组织成一些专题分类。Carrot2提供的一个架构能够从各种搜索引擎（YahooAPI、GoogleAPI、MSN Search API、eTools Meta Search、Alexa Web Search、PubMed、OpenSearch、Lucene index、SOLR）获取搜索结果。<br/><br/><span style="color: #0000FF;">Regain</span><br/><br/>regain是一款与Web搜索引擎类似的桌面搜索引擎系统，其不同之处在于regain不是对Internet内容的搜 索，而是针对自己的文档或文件的搜索，使用regain可以轻松地在几秒内完成大量数据（许多个G）的搜索。Regain采用了Lucene的搜索语法， 因此支持多种查询方式，支持多索引的搜索及基于文件类型的高级搜索，并且能实现URL重写及文件到HTTP的桥接，并且对中文也提供了较好的支持。<br/><br/>Regain提供了两种版本：桌面搜索及服务器搜索。桌面搜索提供了对普通桌面计算机的文档与局域网环境下的网页的快速搜索。服务器版本主要安装在 Web服务器上，为网站及局域网环境下的文件服务器进行搜索。<br/>Tags - <a href="http://www.idceye.com/blog/tags/%25E6%2590%259C%25E7%25B4%25A2%25E5%25BC%2595%25E6%2593%258E%25E6%258A%2580%25E6%259C%25AF/" rel="tag">搜索引擎技术</a> , <a href="http://www.idceye.com/blog/tags/%25E5%2585%25A8%25E6%2596%2587%25E6%2590%259C%25E7%25B4%25A2/" rel="tag">全文搜索</a> , <a href="http://www.idceye.com/blog/tags/web%25E7%2588%25AC%25E8%2599%25AB/" rel="tag">web爬虫</a>
]]>
</description>
</item><item>
<link>http://www.idceye.com/blog/post/446/</link>
<title><![CDATA[在apache中如何自定义的404错误页面]]></title> 
<author>admin &lt;quan.zhao@163.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Tue, 26 Jan 2010 08:00:12 +0000</pubDate> 
<guid>http://www.idceye.com/blog/post/446/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;apache中定义404错误页面很简单，只要在.htaccess文件中加入下面这句就可以了：<br/>ErrorDocument 404 /404.htm<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;不过，当你运行时，很多时候大家会惊奇的发现，在ie中不论如何都是不生效，仍然显示ie自带的404页面，而在firefox或者其他的浏览器中却可以生效。原来我也遇到过这个问题，也是查了好久才又答案的。问题出在IE身上，一般情况下，IE认为小于512字节的出错文档是不友好的，因此给忽略掉了，而换成了ie自带的。只要把404.htm做到大于512字节就可以了。<br/>Tags - <a href="http://www.idceye.com/blog/tags/apache/" rel="tag">apache</a> , <a href="http://www.idceye.com/blog/tags/404%25E9%2594%2599%25E8%25AF%25AF/" rel="tag">404错误</a> , <a href="http://www.idceye.com/blog/tags/htaccess/" rel="tag">htaccess</a>
]]>
</description>
</item><item>
<link>http://www.idceye.com/blog/post/437/</link>
<title><![CDATA[WEB页面上实现文件上传进度控制的JavaScript库]]></title> 
<author>admin &lt;quan.zhao@163.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Tue, 19 Jan 2010 12:02:27 +0000</pubDate> 
<guid>http://www.idceye.com/blog/post/437/</guid> 
<description>
<![CDATA[ 
	dhtmlxVault是一个在WEB页面上实现文件上传进度控制的JavaScript库<br/>下载地址<br/><a href="http://www.oschina.net/p/dhtmlxvault" target="_blank">http://www.oschina.net/p/dhtmlxvault</a><br/><a href="http://www.idceye.com/blog/attachment.php?fid=322" target="_blank"><img src="http://www.idceye.com/blog/attachment.php?fid=322" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><br/>php中如何使用此组件？<br/><div class="js" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />&lt;div id=&quot;vaultDiv&quot;&gt;&lt;/div&gt; <br />&lt;script&gt; &nbsp;<br />vault=new dhtmlXVaultObject(); <br />vault.setImagePath(&quot;codebase/imgs/&quot;); <br />vault.setServerHandlers(&quot;UploadHandler.php&quot;, &quot;GetInfoHandler.php&quot;, &quot;GetIdHandler.php&quot;); <br />vault.create(&quot;vaultDiv&quot;); <br />&lt;/script&gt; <br /></div><br/>另外，需要修改 UploadHandler.php 中的下面代码，确保文件夹存在即可。<br/>$target_path = 'c:&#92;&#92;upload&#92;&#92;';<br/>Tags - <a href="http://www.idceye.com/blog/tags/dhtmlxvault/" rel="tag">dhtmlxvault</a> , <a href="http://www.idceye.com/blog/tags/%25E4%25B8%258A%25E4%25BC%25A0%25E6%258E%25A7%25E4%25BB%25B6/" rel="tag">上传控件</a> , <a href="http://www.idceye.com/blog/tags/%25E8%25BF%259B%25E5%25BA%25A6%25E6%259D%25A1/" rel="tag">进度条</a>
]]>
</description>
</item><item>
<link>http://www.idceye.com/blog/post/275/</link>
<title><![CDATA[php与Webservices--NuSOAP的使用说明(转载) ]]></title> 
<author>admin &lt;quan.zhao@163.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Fri, 16 May 2008 13:02:21 +0000</pubDate> 
<guid>http://www.idceye.com/blog/post/275/</guid> 
<description>
<![CDATA[ 
	NuSOAP 是 PHP 环境下的 WEB 服务编程工具，用于创建或调用 WEB 服务。它是一个开源软件，当前版本是 0.7.2 ，支持 SOAP1.1 、 WSDL1.1 ，可以与其他支持 SOAP1.1 和 WSDL1.1 的系统互操作。 NuSOAP 完全由PHP语言编写，由一系列 PHP 类组成，不需要扩展库的支持，这种特性使得 NuSOAP 可以用于所有的 PHP 环境，不受服务器安全设置的影响。 <br/><br/>1. NuSOAP 的获取和安装 <br/><br/>NuSOAP 项目建立在 SourceForge 上，网络地址是： http://sourceforge.net/projects/nusoap/&nbsp;&nbsp;或 http://dietrich.ganx4.com/nusoap，这里，可以下载到 NuSOAP 的最新的版本。 <br/><br/>NuSOAP 的安装比较简单，把下载的 NuSOAP 的文件拷贝到服务器上，可以放在独立的目录里，也可以与程序代码放在相同的目录里，只要你的 PHP 代码能够访问到这些文件就可以了。 <br/><br/>本文的测试环境基于 PHP4.3.2 和 NuSOAP 0.7.2 版本， NuSOAP 安装在 WEB 目录“ /nusoap ”里，有两个子目录， lib 和 samples 。其中， lib 目录下存放 NuSOAP 的所有源代码文件， samples 目录下是NuSOAP开发小组提供一些的例子。测试文件存放在 WEB 目录“ /nusoap ”里。 <br/><br/><br/>2. NuSOAP 的使用 <br/><br/>NuSOAP 由一 PHP 的类组成，其中最常用到的是类soap_server和类soalclient。类soap_server 用于创建 WEB 服务，类soapclient在访问WEB服务时会用到。 <br/><br/>2.1 一个简单的例子： Hello World <br/><br/>这个例子将利用 NuSOAP 创建一个简单的 WEB 服务，并利用 NuSOAP 创建一个客户端程序，调用这个服务。这个服务唯一的功能就是向客户端返回一个字符串“ Hello World ”。首先，创建 WEB 服务程序代码文件“ /nusoap/nusoap_server1.php ”： <br/><br/>//把 NuSOAP 的源文件包含到当前的代码文件里<br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;lib/nusoap.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">//定义服务程序 </span><br />
<span style="color: #000000; font-weight: bold;">function</span> hello<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #0000ff;">'Hello World!'</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #666666; font-style: italic;">//初始化服务对象 , 这个对象是类 soap_server 的一个实例 </span><br />
<span style="color: #000088;">$soap</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> soap_server<span style="color: #339933;">;</span> <br />
<span style="color: #666666; font-style: italic;">//调用服务对象的 register 方法注册需要被客户端访问的程序。</span><br />
<span style="color: #666666; font-style: italic;">//只有注册过的程序，才能被远程客户端访问到。</span><br />
<span style="color: #000088;">$soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'hello'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #666666; font-style: italic;">//最后一步，把客户端通过 post 方式提交的数据，传递给服务对象的 service 方法。 </span><br />
<span style="color: #666666; font-style: italic;">//service 方法处理输入的数据，调用相应的函数或方法，并且生成正确的反馈，传回给客户端。</span><br />
<span style="color: #000088;">$soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">service</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$HTTP_RAW_POST_DATA</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&nbsp;</div><br/><br/>至此， WEB 服务程序代码文件已经建好，接下来，创建一个客户端程序代码文件“ /nusoap/nusoap_client1.php ”，调用 WEB 服务： <br/><br/>//把 NuSOAP 的源文件包含到当前的代码文件里<br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;lib/nusoap.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">//初始化客户端对象，这个对象是类 soapclient 的一个实例，</span><br />
<br />
<span style="color: #666666; font-style: italic;">//把服务程序的 URL 地址传递给soapclient类的构造函数。</span><br />
<br />
<span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> soapclient<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://127.0.0.1/nusoap/nusoap_server1.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #666666; font-style: italic;">//利用客户端对象的 call 方法调用 WEB 服务的程序$str=$client-&gt;call('hello'); </span><br />
<span style="color: #666666; font-style: italic;">//客户端对象的 getError() 方法可以用来检查调用过程是否出现错误。</span><br />
<span style="color: #666666; font-style: italic;">//如果没有错误， getError() 方法返回 false ；如果有错误， getError()方法返回错误信息。</span><br />
<br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$err</span><span style="color: #339933;">=</span><span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getError</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">&quot; 程序返回 :&quot;</span><span style="color: #339933;">,</span><br />
<br />
<a href="http://www.php.net/htmlentities"><span style="color: #990000;">htmlentities</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #339933;">,</span>ENT_QUOTES<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">&quot; 错误 :&quot;</span><span style="color: #339933;">,</span><br />
<br />
<a href="http://www.php.net/htmlentities"><span style="color: #990000;">htmlentities</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$err</span><span style="color: #339933;">,</span>ENT_QUOTES<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&nbsp;</div><br/><br/> <br/><br/>至此，客户端程序也建立好了，打开浏览器，访问客户端程序，看一下结果。这个例子，浏览器会显示字符串：“程序返回 :Hello World! ” <br/><br/>2.2 传递参数和返回错误信息的方法 <br/><br/>再通过例子说明传递参数和返回错误信息的方法。这个例子实现两个字符串的连接，参数是两个字符串，返回值是由两个参数连接而成的字符串。首先，创建服务程序代码文件“ /nusoap/nusoap_server2.php ”，完整的代码如下： <br/><br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;lib/nusoap.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> concatenate<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str1</span><span style="color: #339933;">,</span><span style="color: #000088;">$str2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/is_string"><span style="color: #990000;">is_string</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <a href="http://www.php.net/is_string"><span style="color: #990000;">is_string</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
<br />
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$str1</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$str2</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">else</span><br />
<br />
<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">new</span> soap_fault<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' 客户端 '</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'concatenate 函数的参数应该是两个字符串 '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000088;">$soap</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> soap_server<span style="color: #339933;">;</span><span style="color: #000088;">$soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'concatenate'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">service</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$HTTP_RAW_POST_DATA</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&nbsp;</div><br/><br/>与 2.1 节 WEB 服务程序的代码比较，这里的代码结构大体是相同的。注意以下两点：<br/><br/>服务程序的定义不同，带有两个参数。 NuSOAP 注册服务程序的过程还是一样的，都是调用服务对象的 register 方法。 <br/>这里使用了 NuSOAP 的一个新类 soap_fault 。当传入的两个参数有一个不是字符串时，程序通过这个类把错误信息返回给客户端。这个类的构造函数有 4 个参数： <br/>fault<br/><br/>code <br/> 必填参数 , 建议值为“ Client ”或“ Server ”，指明错误是客户端的错误还是服务端的错误。 <br/> <br/>faultactor <br/> 预留项，现在还没有使用 <br/> <br/>faultstring <br/> 错误的描述信息 <br/> <br/>faultdetail <br/> 可选项， XML 格式的数据 , 说明详细的错误信息 <br/> <br/><br/><br/>客户端程序代码文件“ /nusoap/nusoap_client2.php ”的完整内容如下 : <br/><br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;lib/nusoap.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> soapclient<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://127.0.0.1/nusoap/nusoap_server2.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$parameters</span><span style="color: #339933;">=</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' 字符串 1'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">' 字符串 2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$str</span><span style="color: #339933;">=</span><span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">call</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'concatenate'</span><span style="color: #339933;">,</span><span style="color: #000088;">$parameters</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$err</span><span style="color: #339933;">=</span><span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getError</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">&quot; 程序返回 :&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$str</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">&quot; 错误 :&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$err</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&nbsp;</div><br/> <br/><br/>NuSOAP 的客户端调用带参数的 WEB 服务时，使用数组传递参数。 $parameters 是一个数组，其中依次是每个参数的值。客户端在调用远程的服务程序时，使用带有两个参数的 call 方法，第一个参数是服务程序的名称，第二个参数是服务程序的参数数组，这里是 $parameters 。通过浏览器访问上面的客户端程序，浏览器上会显示字符串：“ 程序返回 : 字符串 1 字符串 2 ” <br/><br/>接下来，试着给 WEB 服务程序传入错误参数，修改上面的客户端程序，把生成参数数组的语句改成： $parameters=array(“ 字符串 ”,12) ，再通过浏览器访问客户端程序，浏览器上会显示字符串：“错误 : 客户端 : concatenate 函数的参数应该是两个字符串”。 WEB 服务程序判断传入的参数有一个不是字符串，通过 soap_fault 给客户端返回错误信息。 <br/><br/>2.3 调试的方法 <br/><br/>NuSOAP中常用的调试方法有三种:<br/><br/>2.3.1 soapclient 类的 request 和 response 成员变量 <br/><br/>最直接的调试方法就是检查访问 WEB 服务的过程中，客户端发出的 request 信息和服务端返回的 response 信息。 soapclient 类的 request 和 response 成员变量包含这些信息，在程序中显示出这两个变量的内容，可以帮助分析程序运行的情况。看下面的代码:<br/><br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;lib/nusoap.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> soapclient<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://127.0.0.1/nusoap/nusoap_server2.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$parameters</span><span style="color: #339933;">=</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' 字符串 1'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">' 字符串 2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$str</span><span style="color: #339933;">=</span><span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">call</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'concatenate'</span><span style="color: #339933;">,</span><span style="color: #000088;">$parameters</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$err</span><span style="color: #339933;">=</span><span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getError</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">&quot; 程序返回 :&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$str</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">&quot; 错误 :&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$err</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #666666; font-style: italic;">//下面显示request和response 变量的内容</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;p/&gt;'</span><span style="color: #339933;">;</span>echo <span style="color: #0000ff;">'Request:'</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;pre&gt;'</span><span style="color: #339933;">,</span><a href="http://www.php.net/htmlspecialchars"><span style="color: #990000;">htmlspecialchars</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span><span style="color: #339933;">,</span>ENT_QUOTES<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'&lt;/pre&gt;'</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'Response:'</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;pre&gt;'</span><span style="color: #339933;">,</span><a href="http://www.php.net/htmlspecialchars"><span style="color: #990000;">htmlspecialchars</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">response</span><span style="color: #339933;">,</span>ENT_QUOTES <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'&lt;/pre&gt;'</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp;</div><br/><br/><br/>2.3.2 soapclient 类的 debug_str 成员变量 <br/><br/>soapclient 类的 debug_str 成员变量提供了更为详细的调试信息，查看这个变量的内容，可以更好地帮助程序调试。 <br/><br/>2.3.3 WEB 服务程序提供的调试方法 <br/><br/>WEB 服务程序代码中，在创建 soap_server 类的实例前，定义变量 $debug=1 。调试信息作为备注，放在 SOAP 消息的尾部返回客户端，客户端通过查看 WEB 服务的 response 信息来查看调试信息。<br/><br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;lib/nusoap.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> concatenate<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str1</span><span style="color: #339933;">,</span><span style="color: #000088;">$str2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/is_string"><span style="color: #990000;">is_string</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <a href="http://www.php.net/is_string"><span style="color: #990000;">is_string</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
<br />
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$str1</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$str2</span><span style="color: #339933;">;</span><br />
<br />
&nbsp;<span style="color: #b1b100;">else</span><br />
<br />
<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">new</span> soap_fault<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' 客户端 '</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'concatenate 函数的参数应该是两个字符串 '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000088;">$debug</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//定义调试</span><br />
<br />
<span style="color: #000088;">$soap</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> soap_server<span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'concatenate'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">service</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$HTTP_RAW_POST_DATA</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&nbsp;</div><br/><br/> <br/><br/>2.4 对 WSDL 的支持 <br/><br/>NuSOAP 内部通过类 "WSDL" 实现对 WSDL 的支持。对于 NuSOAP 的用户来说，不需要关心内部的WSDL类是如何工作的，正确地使用 soap_server 类和 soapclient 类就可以实现对 WSDL 的支持。 <br/><br/>2.4.1 创建支持 WSDL 的 WEB 服务 <br/><br/>为了实现 WEB 服务程序对 WSDL 的支持，需要使用 soap_server 的 configureWSDL 方法，并且在调用 soap_server 的 register 方法注册 WEB 服务程序时，需要提供更详细的参数。看下面的代码，代码的文件名是 “/nusoap/nusoap_server3.php”。 <br/><br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;lib/nusoap.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> concatenate<span style="color: #009900;">&#40;</span><span style="color: #000088;">$str1</span><span style="color: #339933;">,</span><span style="color: #000088;">$str2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/is_string"><span style="color: #990000;">is_string</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <a href="http://www.php.net/is_string"><span style="color: #990000;">is_string</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
<br />
&nbsp;<span style="color: #b1b100;">return</span> <span style="color: #000088;">$str1</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$str2</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">else</span><br />
<br />
&nbsp;<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">new</span> soap_fault<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' 客户端 '</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'concatenate 函数的参数应该是两个字符串 '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000088;">$soap</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> soap_server<span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">configureWSDL</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'concatenate'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #666666; font-style: italic;">// 初始化对 WSDL 的支持</span><br />
<br />
<span style="color: #666666; font-style: italic;">// 注册服务</span><br />
<br />
<span style="color: #000088;">$soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">register</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'concatenate'</span><span style="color: #339933;">,</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;str1&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">&quot;xsd:string&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;str2&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">&quot;xsd:string&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// 输入参数的定义</span><br />
<br />
<a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;return&quot;</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">&quot;xsd:string&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// 返回参数的定义</span><br />
<br />
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$HTTP_RAW_POST_DATA</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$HTTP_RAW_POST_DATA</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$HTTP_RAW_POST_DATA</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">service</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$HTTP_RAW_POST_DATA</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp;</div><br/><br/>现在打开浏览器，访问刚才建立的文件，http://127.0.0.1/nusoap/nusoap_server3.php，结果如下：<br/><br/>concatenate<br/><br/>View the WSDL for the service. Click on an operation name to view it&apos;s details.<br/><br/>concatenate <br/>点击函数名称concatenate，可以看到对函数的描述。点击"WSDL"，或者访问WEB服务文件，并在后面加上查询字符串"?wsdl"(http://127.0.0.1/nusoap/nusoap_server3.php?wsdl)，可以得到WEB服务的WSDL内容。<br/><br/>2.4.2 通过 WSDL 调用 WEB 服务 <br/><br/>通过 WSDL 调用 WEB 服务，与不通过 WSDL 调用 WEB 服务，程序的结构大体相同。区别在于，通过 WSDL 调用 WEB 服务，初始化 soapclient 类时，传入两个参数到 soapclient 的构造函数，第一个参数是 WSDL 文件的地址，第二个参数指定是否使用 WSDL ，指定为 true 即可。看下面的代码，代码的文件名是 “ /nusoap/nusoap_client3.php ” <br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;lib/nusoap.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> soapclient<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://127.0.0.1/nusoap/nusoap_server3.php?wsdl'</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$parameters</span><span style="color: #339933;">=</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">' 字符串 1'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">' 字符串 2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$str</span><span style="color: #339933;">=</span><span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">call</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'concatenate'</span><span style="color: #339933;">,</span><span style="color: #000088;">$parameters</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$err</span><span style="color: #339933;">=</span><span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getError</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp;<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">&quot; 程序返回 :&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$str</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">&quot; 错误 :&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$err</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&nbsp;</div><br/><br/><br/>2.4.3 代理的使用 <br/><br/>NuSOAP 提供代理的方法调用远程 WEB 服务。这种方法，在客户端程序里面创建一个远程服务的代理对象，通过代理直接调用远程的 WEB 服务，而不需要通过 soalclient 类的 call 方法。看下面的代码。 <br/><br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;lib/nusoap.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> soapclient<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://127.0.0.1/nusoap/nusoap_server3.php?wsdl'</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$proxy</span><span style="color: #339933;">=</span><span style="color: #000088;">$client</span> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">getProxy</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 创建代理对象 (soap_proxy 类 )</span><br />
<br />
<span style="color: #000088;">$str</span><span style="color: #339933;">=</span><span style="color: #000088;">$proxy</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">concatenate</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; 参数 1&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot; 参数 2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 直接调用 WEB 服务</span><br />
<br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$err</span><span style="color: #339933;">=</span><span style="color: #000088;">$proxy</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getError</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">&quot; 程序返回 :&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$str</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
<br />
<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">&quot; 错误 :&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$err</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp;</div><br/>Tags - <a href="http://www.idceye.com/blog/tags/php/" rel="tag">php</a> , <a href="http://www.idceye.com/blog/tags/webservices/" rel="tag">webservices</a> , <a href="http://www.idceye.com/blog/tags/nusoap/" rel="tag">nusoap</a>
]]>
</description>
</item><item>
<link>http://www.idceye.com/blog/post/274/</link>
<title><![CDATA[用nusoap在Cakephp中访问Webservice]]></title> 
<author>admin &lt;quan.zhao@163.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Fri, 16 May 2008 12:49:15 +0000</pubDate> 
<guid>http://www.idceye.com/blog/post/274/</guid> 
<description>
<![CDATA[ 
	1. 下载 nusoap 库，点这里下载<br/><a href="attachment.php?fid=198">点击这里下载文件</a><br/><br/>2. 解压到 /app/vendors/nusoap ，目录结构类似：<br/>/app/vendors/nusoap/lib<br/>/app/vendors/nusoap/samples<br/><br/>3. 封装为一个component，保存到 /app/controllers/components/soap.php，以方便在controller里调用 ：<br/><br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #000000; font-weight: bold;">class</span> SoapComponent <span style="color: #000000; font-weight: bold;">extends</span> Component <br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$defaultClientOptions</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp;<span style="color: #0000ff;">'endpoint'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp;<span style="color: #0000ff;">'wsdl'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp;<span style="color: #0000ff;">'proxyhost'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp;<span style="color: #0000ff;">'proxyport'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp;<span style="color: #0000ff;">'proxyusername'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp;<span style="color: #0000ff;">'proxypassword'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp;<span style="color: #0000ff;">'timeout'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp;<span style="color: #0000ff;">'response_timeout'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">20</span><span style="color: #339933;">,</span><br />
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$defaultCallOptions</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'serviceUrl'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'operation'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'namespace'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'http://tempuri.org'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'soapAction'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'params'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'debug'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// set to true to return debug info</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'encoding'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'UTF-8'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'rpcParams'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'style'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'rpc'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'headers'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'use'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'encoded'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'autoCheckWSDL'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// if serviceUrl end with &quot;?WSDL&quot; then set the client options['wsdl'] to be true</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> initialize<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #000088;">$controller</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;vendor<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'nusoap/lib/nusoap'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #009933; font-style: italic;">/**<br />
* @author RainChen @ Wed Mar 12 17:55:37 CST 2008<br />
* @uses return a soap client object<br />
* @access public<br />
* @param mix $options (see $this-&gt;defaultClientOptions)<br />
* @return object<br />
* @version 0.1 <br />
*/</span><br />
<span style="color: #000000; font-weight: bold;">function</span> client<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$defaultClientOptions</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">defaultClientOptions</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/is_array"><span style="color: #990000;">is_array</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <br />
&nbsp; &nbsp;<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$options</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'endpoint'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$options</span> <span style="color: #339933;">=</span> am<span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">defaultClientOptions</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <br />
&nbsp; &nbsp;<span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> nusoap_client<span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'endpoint'</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'wsdl'</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'proxyhost'</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'proxyport'</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'proxyusername'</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'proxypassword'</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'timeout'</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'response_timeout'</span><span style="color: #009900;">&#93;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #009933; font-style: italic;">/**<br />
* @author RainChen @ Wed Mar 12 17:55:16 CST 2008<br />
* @uses quick call<br />
* @access public<br />
* @param array $options (see $this-&gt;defaultCallOptions)<br />
* @return array<br />
* @version 0.1 <br />
*/</span><br />
<span style="color: #000000; font-weight: bold;">function</span> call<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$defaultOptions</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">defaultCallOptions</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$options</span> <span style="color: #339933;">=</span> am<span style="color: #009900;">&#40;</span><span style="color: #000088;">$defaultOptions</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'soapAction'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'soapAction'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'namespace'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">'/'</span><span style="color: #339933;">.</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'operation'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
&nbsp; <br />
&nbsp; &nbsp;<span style="color: #000088;">$clientOptions</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">defaultClientOptions</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$clientOptions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'endpoint'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'serviceUrl'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'autoCheckWSDL'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/strpos"><span style="color: #990000;">strpos</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'serviceUrl'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'?WSDL'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$clientOptions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'wsdl'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
&nbsp; <br />
&nbsp; &nbsp;<span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">client</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$clientOptions</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">soap_defencoding</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'encoding'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">decode_utf8</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">call</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'operation'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'params'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'namespace'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'soapAction'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'headers'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'rpcParams'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'style'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'use'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <br />
&nbsp; &nbsp;<span style="color: #000088;">$return</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'fault'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'error'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'result'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fault</span><span style="color: #009900;">&#41;</span> <br />
&nbsp; &nbsp;<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$return</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'fault'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">else</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$err</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getError</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$err</span><span style="color: #009900;">&#41;</span> <br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$return</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'error'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$err</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">else</span> <br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #000088;">$return</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'result'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
&nbsp; <br />
&nbsp; &nbsp;<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'debug'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$return</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'request'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$return</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'response'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">response</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$return</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'debug'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getDebug</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">return</span> <span style="color: #000088;">$return</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #009933; font-style: italic;">/**<br />
* @author RainChen @ Wed Mar 12 17:57:29 CST 2008<br />
* @uses quick debug for $this-&gt;call() result;<br />
* @access public<br />
* @param array $result<br />
* @return void<br />
* @version 0.1 <br />
*/</span><br />
<span style="color: #000000; font-weight: bold;">function</span> debug<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'fault'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;h2&gt;Fault (Expect - The request contains an invalid SOAP body)&lt;/h2&gt;&lt;pre&gt;'</span><span style="color: #339933;">;</span> <a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'fault'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;/pre&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'error'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;h2&gt;Error&lt;/h2&gt;&lt;pre&gt;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'error'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/pre&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp;<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;h2&gt;Result&lt;/h2&gt;&lt;pre&gt;'</span><span style="color: #339933;">;</span> <a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'result'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;/pre&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp;<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;h2&gt;Request&lt;/h2&gt;&lt;pre&gt;'</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/htmlspecialchars"><span style="color: #990000;">htmlspecialchars</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'request'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> ENT_QUOTES<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/pre&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;h2&gt;Response&lt;/h2&gt;&lt;pre&gt;'</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/htmlspecialchars"><span style="color: #990000;">htmlspecialchars</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'response'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> ENT_QUOTES<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/pre&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<a href="http://www.php.net/echo"><span style="color: #990000;">echo</span></a> <span style="color: #0000ff;">'&lt;h2&gt;Debug&lt;/h2&gt;&lt;pre&gt;'</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/htmlspecialchars"><span style="color: #990000;">htmlspecialchars</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'debug'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> ENT_QUOTES<span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&lt;/pre&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp;</div><br/>4. 在任意controller里添加测试：<br/><div class="php" style="font-family:monospace;FONT-SIZE: 12px; FONT-FAMILY:Verdana,Arial,Helvetica,sans-serif; BORDER:1px dotted gray; PADDING: 5px 5px 5px 5px"><br />
<span style="color: #000000; font-weight: bold;">class</span> TestController <span style="color: #000000; font-weight: bold;">extends</span> AppController<br />
<span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$components</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span>Soap<span style="color: #0000ff;">');<br />
<br />
&nbsp; &nbsp; function test()<br />
&nbsp; &nbsp;{<br />
<br />
&nbsp; &nbsp; &nbsp; $soapRequest = array(<br />
&nbsp; &nbsp; &nbsp; &nbsp;'</span>serviceUrl<span style="color: #0000ff;">' =&gt; '</span>http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//webService.asmx?WSDL',//这里一定要是大写字母WSDL</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">'operation'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'getUser'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">'encoding'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'UTF-8'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">'debug'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// set to true to return debug info</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">'params'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'username'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'abc'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">call</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$soapRequest</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; <a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$soapRequest</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'debug'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$soapRequest</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'debug'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Soap</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">debug</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
&nbsp;</div><br/>备注：<br/><br/>1. 在构建服务端时，serviceUrl 须加 ?WSDL 后缀<br/>2. 返回结果在：$soapRequest['result']<br/>3.如果$soapRequest 中有debug选项，$result会包含调试信息，可通过$this->Soap->debug($result) 快速调试<br/>Tags - <a href="http://www.idceye.com/blog/tags/nusoap/" rel="tag">nusoap</a> , <a href="http://www.idceye.com/blog/tags/cakephp/" rel="tag">cakephp</a> , <a href="http://www.idceye.com/blog/tags/webservice/" rel="tag">webservice</a> , <a href="http://www.idceye.com/blog/tags/wsdl/" rel="tag">wsdl</a>
]]>
</description>
</item><item>
<link>http://www.idceye.com/blog/post/264/</link>
<title><![CDATA[PHP与Java如何共享session]]></title> 
<author>admin &lt;quan.zhao@163.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Mon, 12 May 2008 08:52:39 +0000</pubDate> 
<guid>http://www.idceye.com/blog/post/264/</guid> 
<description>
<![CDATA[ 
	PHP与Java如何共享session<br/>请看这里： <a href="./read.php/273.htm" target="_blank">PHP调用Java webservic 实现方法，实用session 共享</a><br/>Tags - <a href="http://www.idceye.com/blog/tags/php/" rel="tag">php</a> , <a href="http://www.idceye.com/blog/tags/java/" rel="tag">java</a> , <a href="http://www.idceye.com/blog/tags/%25E5%2585%25B1%25E4%25BA%25ABsession/" rel="tag">共享session</a>
]]>
</description>
</item>
</channel>
</rss>