<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[真实践]php soap亲自实例实践过，很值得借鉴。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sat, 15 Jan 2011 07:05:15 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	1，不使用wsdl<br/><br/>建立:soap文件夹后把nusoap库放如，nusoap下载地址：http://sourceforge.net/projects/nusoap/<br/>服务端：helloworld2.php<br/><div class="code"><br/>&lt;?php&nbsp;&nbsp; <br/>//包函nusoap.php&nbsp;&nbsp; <br/>require_once(&#039;./lib/nusoap.php&#039;);&nbsp;&nbsp; <br/>&nbsp;&nbsp; <br/>//创建服务端&nbsp;&nbsp; <br/>$server = new soap_server;&nbsp;&nbsp; <br/>&nbsp;&nbsp; <br/>//定义客户端调用方法&nbsp;&nbsp; <br/>$server-&gt;register(&#039;hello&#039;);&nbsp;&nbsp; <br/>&nbsp;&nbsp; <br/>//调用方法以及参数&nbsp;&nbsp; <br/>function hello($name) &#123;&nbsp;&nbsp; <br/> return &#039;Hello, &#039; . $name;&nbsp;&nbsp; <br/>&#125;&nbsp;&nbsp; <br/>&nbsp;&nbsp; <br/>$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : &#039;&#039;;&nbsp;&nbsp; <br/>$server-&gt;service($HTTP_RAW_POST_DATA);&nbsp;&nbsp; <br/>?&gt;<br/></div><br/>client端：hello.php:<br/><div class="code"><br/>&lt;?php<br/>//包函nusoap.php<br/>require_once(&#039;./lib/nusoap.php&#039;);<br/>//新建一个soap客户端，调用服务端提供的wsdl<br/>//$client = new soapclient(&#039;http://localhost/soap/hellowsdl2.php?wsdl&#039;, true);<br/>$client = new soapclient(&#039;http://localhost/soap/helloworld2.php&#039;);<br/>//查看一下是不是报错<br/>$err = $client-&gt;getError();<br/>if ($err) &#123;<br/> //显示错误<br/> echo &#039;&lt;h2&gt;Constructor error&lt;/h2&gt;&lt;pre&gt;&#039; . $err . &#039;&lt;/pre&gt;&#039;;<br/>&#125;<br/><br/>//调用服务端的方法<br/>$result = $client-&gt;call(&#039;hello&#039;, array(&#039;person&#039; =&gt; &quot;this is a soap&quot;));<br/><br/>echo &#039;&lt;h2&gt;Result&lt;/h2&gt;&lt;pre&gt;&#039;;<br/>print_r($result);<br/>echo &#039;&lt;/pre&gt;&#039;;<br/>?&gt;<br/></div><br/><br/>2，使用wsld<br/>建立目录：test，把nusoap库放如，nusoap下载地址：http://sourceforge.net/projects/nusoap/<br/>服务端:helloworld2.php<br/><div class="code"><br/>&lt;?php&nbsp;&nbsp; <br/>//包函nusoap.php&nbsp;&nbsp; <br/>require_once(&#039;./lib/nusoap.php&#039;);&nbsp;&nbsp; <br/>//新建一个soap服务&nbsp;&nbsp; <br/>$server = new soap_server();&nbsp;&nbsp; <br/>//初始化支持wsdl&nbsp;&nbsp; <br/>$server-&gt;configureWSDL(&#039;hellowsdl2&#039;, &#039;urn:hellowsdl2&#039;);&nbsp;&nbsp; <br/>//定义数据结构来接收数据&nbsp;&nbsp; <br/>$server-&gt;wsdl-&gt;addComplexType(&nbsp;&nbsp; <br/> &#039;Person&#039;,&nbsp;&nbsp; <br/> &#039;complexType&#039;,&nbsp;&nbsp; <br/> &#039;struct&#039;,&nbsp;&nbsp; <br/> &#039;all&#039;,&nbsp;&nbsp; <br/> &#039;&#039;,&nbsp;&nbsp; <br/> array(&nbsp;&nbsp; <br/> &#039;firstname&#039; =&gt; array(&#039;name&#039; =&gt; &#039;firstname&#039;, &#039;type&#039; =&gt; &#039;xsd:string&#039;),//后面的type定义数据的类型，这个是string&nbsp;&nbsp; <br/> &#039;age&#039; =&gt; array(&#039;name&#039; =&gt; &#039;age&#039;, &#039;type&#039; =&gt; &#039;xsd:int&#039;),//后面的type定义数据的类型，这个是int&nbsp;&nbsp; <br/> &#039;gender&#039; =&gt; array(&#039;name&#039; =&gt; &#039;gender&#039;, &#039;type&#039; =&gt; &#039;xsd:string&#039;)//后面的type定义数据的类型，这个是string&nbsp;&nbsp; <br/> )&nbsp;&nbsp; <br/>);&nbsp;&nbsp; <br/>$server-&gt;wsdl-&gt;addComplexType(&nbsp;&nbsp; <br/> &#039;SweepstakesGreeting&#039;,&nbsp;&nbsp; <br/> &#039;complexType&#039;,&nbsp;&nbsp; <br/> &#039;struct&#039;,&nbsp;&nbsp; <br/> &#039;all&#039;,&nbsp;&nbsp; <br/> &#039;&#039;,&nbsp;&nbsp; <br/> array(&nbsp;&nbsp; <br/> &#039;greeting&#039; =&gt; array(&#039;name&#039; =&gt; &#039;greeting&#039;, &#039;type&#039; =&gt; &#039;xsd:string&#039;),&nbsp;&nbsp; <br/> &#039;winner&#039; =&gt; array(&#039;name&#039; =&gt; &#039;winner&#039;, &#039;type&#039; =&gt; &#039;xsd:string&#039;)&nbsp;&nbsp; <br/> )&nbsp;&nbsp; <br/>);&nbsp;&nbsp; <br/>//服务器定义的soap调用方法&nbsp;&nbsp; <br/>$server-&gt;register(&#039;hello&#039;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 方法名字hello，方法就在下面&nbsp;&nbsp; <br/> array(&#039;person&#039; =&gt; &#039;tns:Person&#039;),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 客户端传来的变量&nbsp;&nbsp; <br/> array(&#039;return&#039; =&gt; &#039;tns:SweepstakesGreeting&#039;),&nbsp;&nbsp;&nbsp;&nbsp;//返回参数&nbsp;&nbsp; <br/> &#039;urn:hellowsdl2&#039;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // soap名&nbsp;&nbsp; <br/> &#039;urn:hellowsdl2#hello&#039;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // soap的方法名&nbsp;&nbsp; <br/> &#039;rpc&#039;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 使用的方式&nbsp;&nbsp; <br/> &#039;encoded&#039;,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 编码&nbsp;&nbsp; <br/> &#039;test&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// 存档&nbsp;&nbsp; <br/>);&nbsp;&nbsp; <br/>//定义上面注册过的函数hello&nbsp;&nbsp; <br/>function hello($person) &#123;&nbsp;&nbsp; <br/> $greeting = &#039;Hello, &#039; . $person&#91;&#039;firstname&#039;&#93; .&nbsp;&nbsp; <br/> &#039;. It is nice to meet a &#039; . $person&#91;&#039;age&#039;&#93; .&nbsp;&nbsp; <br/> &#039; year old &#039; . $person&#91;&#039;gender&#039;&#93; . &#039;.&#039;;&nbsp;&nbsp; <br/>&nbsp;&nbsp; <br/> $winner =&nbsp;&nbsp;&#039;Scott&#039;;&nbsp;&nbsp; <br/>//要返回的数据&nbsp;&nbsp; <br/> return array(&nbsp;&nbsp; <br/> &#039;greeting&#039; =&gt; $greeting,&nbsp;&nbsp; <br/> &#039;winner&#039; =&gt; $winner&nbsp;&nbsp; <br/> );&nbsp;&nbsp; <br/>&#125;&nbsp;&nbsp; <br/>// 请求时（试图）调用服务&nbsp;&nbsp; <br/>$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : &#039;&#039;;&nbsp;&nbsp; <br/>$server-&gt;service($HTTP_RAW_POST_DATA);&nbsp;&nbsp; <br/>?&gt;<br/></div><br/><br/> 客户端：hello.php<br/><br/><div class="code"><br/>&lt;?php<br/>//包函nusoap.php<br/>require_once(&#039;./lib/nusoap.php&#039;);<br/>//新建一个soap客户端，调用服务端提供的wsdl<br/>//$client = new soapclient(&#039;http://localhost/test/hellowsdl2.php?wsdl&#039;, true);<br/>$client = new soapclient(&#039;http://localhost/test/helloworld2.php&#039;);<br/>//查看一下是不是报错<br/>$err = $client-&gt;getError();<br/>if ($err) &#123;<br/> //显示错误<br/> echo &#039;&lt;h2&gt;Constructor error&lt;/h2&gt;&lt;pre&gt;&#039; . $err . &#039;&lt;/pre&gt;&#039;;<br/>&#125;<br/>//要向服务端要传的参数<br/>$person = array(&#039;firstname&#039; =&gt; &#039;Willi&#039;, &#039;age&#039; =&gt; 22, &#039;gender&#039; =&gt; &#039;male&#039;);<br/><br/>//调用服务端的方法<br/>$result = $client-&gt;call(&#039;hello&#039;, array(&#039;person&#039; =&gt; $person));<br/>//错误审核<br/>if ($client-&gt;fault) &#123;<br/> echo &#039;&lt;h2&gt;Fault&lt;/h2&gt;&lt;pre&gt;&#039;;<br/> print_r($result);<br/> echo &#039;&lt;/pre&gt;&#039;;<br/>&#125; else &#123;<br/> $err = $client-&gt;getError();<br/> if ($err) &#123;<br/> echo &#039;&lt;h2&gt;Error&lt;/h2&gt;&lt;pre&gt;&#039; . $err . &#039;&lt;/pre&gt;&#039;;<br/> &#125; else &#123;<br/> echo &#039;&lt;h2&gt;Result&lt;/h2&gt;&lt;pre&gt;&#039;;<br/> print_r($result);<br/> echo &#039;&lt;/pre&gt;&#039;;<br/> &#125;<br/>&#125;<br/>//显示请求信息<br/>echo &#039;&lt;h2&gt;Request&lt;/h2&gt;&#039;;<br/>echo &#039;&lt;pre&gt;&#039; . htmlspecialchars($client-&gt;request, ENT_QUOTES) . &#039;&lt;/pre&gt;&#039;;<br/>//显示返回信息<br/>echo &#039;&lt;h2&gt;Response&lt;/h2&gt;&#039;;<br/>echo &#039;&lt;pre&gt;&#039; . htmlspecialchars($client-&gt;response, ENT_QUOTES) . &#039;&lt;/pre&gt;&#039;;<br/>//显示调试信息<br/>echo &#039;&lt;h2&gt;Debug&lt;/h2&gt;&#039;;<br/>echo &#039;&lt;pre&gt;&#039; . htmlspecialchars($client-&gt;debug_str, ENT_QUOTES) . &#039;&lt;/pre&gt;&#039;;<br/>?&gt;<br/></div><br/><br/><br/><br/>实践来源：http://www.jz123.cn/text/1234122.html
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [真实践]php soap亲自实例实践过，很值得借鉴。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>