yifangyou 发表于 2011-12-21 08:44

捕捉soap的xml形式

下面是我以前对Php的soap接口进行抓包分析出的结果,这个分析在当服务端或者客户端的Php没有安装soap模块时,可以使用构建xml的方式实现相同的功能<div>服务端:</div><div><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li><span style="color:#000000;"><span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">?</span><span style="color:#0000FF;">php</span><br></span></li><li>
<span style="color:#0000FF;">$</span><span style="color:#008080;">data</span> <span style="color:#0000CC;">=</span> <span style="color:#0000FF;">$</span><span style="color:#008080;">HTTP_RAW_POST_DATA</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">$</span><span style="color:#008080;">data</span> <span style="color:#0000CC;">=</span> <span style="color:#FF0000;">file_get_contents</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">'php://input'</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">$</span><span style="color:#008080;">server</span> <span style="color:#0000CC;">=</span> <span style="color:#0000FF;">new</span> SoapServer<span style="color:#0000CC;">(</span><span style="color:#0000FF;">null</span><span style="color:#0000CC;">,</span> <span style="color:#FF0000;">array</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">'uri'</span> <span style="color:#0000CC;">=</span><span style="color:#0000CC;">&gt;</span> <span style="color:#FF00FF;">"http://abc-soap-duba/"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">$</span><span style="color:#008080;">server</span><span style="color:#0000CC;">-</span><span style="color:#0000CC;">&gt;</span>addFunction<span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"sendtask"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">$</span><span style="color:#008080;">server</span><span style="color:#0000CC;">-</span><span style="color:#0000CC;">&gt;</span>handle<span style="color:#0000CC;">(</span><span style="color:#0000FF;">$</span><span style="color:#008080;">data</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">function</span> sendtask<span style="color:#0000CC;">(</span><span style="color:#0000CC;">)</span><br></li><li>
<span style="color:#0000CC;">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF;">return</span> <span style="color:#FF00FF;">"ok"</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000CC;">}</span><br></li><li>
<span style="color:#0000CC;">?</span><span style="color:#0000CC;">&gt;</span></li></ol></div></div><div>客户端代码</div><div><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li><span style="color:#000000;"><span style="color:#0000CC;">&lt;</span><span style="color:#0000CC;">?</span><span style="color:#0000FF;">php</span><br></span></li><li>
<span style="color:#0000FF;">$</span><span style="color:#008080;">client</span> <span style="color:#0000CC;">=</span> <span style="color:#0000FF;">new</span> SoapClient<span style="color:#0000CC;">(</span><span style="color:#0000FF;">null</span><span style="color:#0000CC;">,</span> <span style="color:#FF0000;">array</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">'location'</span> <span style="color:#0000CC;">=</span><span style="color:#0000CC;">&gt;</span> <span style="color:#FF00FF;">"http://api.abc.cn/taskserver.php"</span><span style="color:#0000CC;">,</span><br></li><li>
&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;<span style="color:#FF00FF;">'uri'</span>      <span style="color:#0000CC;">=</span><span style="color:#0000CC;">&gt;</span> <span style="color:#FF00FF;">"http://abc-soap-duba/"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">$</span><span style="color:#008080;">username</span><span style="color:#0000CC;">=</span><span style="color:#FF00FF;">"cdn@abc.cn"</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">$</span><span style="color:#008080;">password</span><span style="color:#0000CC;">=</span><span style="color:#FF0000;">md5</span><span style="color:#0000CC;">(</span><span style="color:#FF00FF;">"123456"</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">$</span><span style="color:#008080;">domain</span><span style="color:#0000CC;">=</span><span style="color:#FF00FF;">"www.abc.cn"</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000FF;">$</span><span style="color:#008080;">pathsizelist</span><span style="color:#0000CC;">=</span><span style="color:#FF00FF;">"/images/ad2.gif,4846,/images/ad3.gif,5788,/images/ico01.gif,1089,/images/logo.gif,1605"</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#FF0000;">echo</span> <span style="color:#0000FF;">$</span><span style="color:#008080;">client</span><span style="color:#0000CC;">-</span><span style="color:#0000CC;">&gt;</span>sendtask<span style="color:#0000CC;">(</span><span style="color:#0000FF;">$</span><span style="color:#008080;">username</span><span style="color:#0000CC;">,</span><span style="color:#0000FF;">$</span><span style="color:#008080;">password</span><span style="color:#0000CC;">,</span><span style="color:#0000FF;">$</span><span style="color:#008080;">domain</span><span style="color:#0000CC;">,</span><span style="color:#0000FF;">$</span><span style="color:#008080;">pathsizelist</span><span style="color:#0000CC;">)</span><span style="color:#0000CC;">;</span><br></li><li>
<span style="color:#0000CC;">?</span><span style="color:#0000CC;">&gt;</span></li></ol></div></div><div>客户端发出的数据:</div><div><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li>POST /b.php HTTP/1.1</li><li>
Host: api.abc.cn</li><li>
Connection: Keep-Alive</li><li>
User-Agent: PHP-SOAP/5.2.2</li><li>
Content-Type: text/xml; charset=utf-8</li><li>
SOAPAction: "http://abc-soap-duba/#sendtask"</li><li>
Content-Length: 766</li><li>
</li><li>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;</li><li>
&lt;SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://abc-soap-duba/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"&gt;</li><li>
&lt;SOAP-ENV:Body&gt;</li><li>
&lt;ns1:sendtask&gt;</li><li>
&lt;param0 xsi:type="xsd:string"&gt;cdn@abc.cn&lt;/param0&gt;</li><li>
&lt;param1 xsi:type="xsd:string"&gt;e10adc3949ba59abbe56e057f20f883e&lt;/param1&gt;</li><li>
&lt;param2 xsi:type="xsd:string"&gt;www.abc.cn&lt;/param2&gt;</li><li>
&lt;param3 xsi:type="xsd:string"&gt;/images/ad2.gif,4846,/images/ad3.gif,5788,/images/ico01.gif,1089,/images/logo.gif,1605&lt;/param3&gt;</li><li>
&lt;/ns1:sendtask&gt;</li><li>
&lt;/SOAP-ENV:Body&gt;</li><li>
&lt;/SOAP-ENV:Envelope&gt;</li></ol></div></div><div>当server中没有改函数时返回的结果</div><div><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</li><li>
&lt;SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;SOAP-ENV:Body&gt;&lt;SOAP-ENV:Fault&gt;&lt;faultcode&gt;SOAP-ENV:Server&lt;/faultcode&gt;&lt;faultstring&gt;Function 'sendtasks' doesn't exist&lt;/faultstring&gt;&lt;/SOAP-ENV:Fault&gt;&lt;/SOAP-ENV:Body&gt;&lt;/SOAP-ENV:Envelope&gt;</li></ol></div></div><div>当server中有该函数时的结果</div><div><div id="codeText" class="codeText"><ol style="margin:0 1px 0 0;padding:5px 0;" start="1" class="dp-css"><li>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</li><li>
&lt;SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://abc-soap-duba/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"&gt;</li><li>
&lt;SOAP-ENV:Body&gt;</li><li>
        &lt;ns1:sendtaskResponse&gt;</li><li>
        &lt;return xsi:type="xsd:string"&gt;ok&lt;/return&gt;</li><li>
        &lt;/ns1:sendtaskResponse&gt;</li><li>
&lt;/SOAP-ENV:Body&gt;</li><li>
&lt;/SOAP-ENV:Envelope&gt;</li></ol></div></div><div>end</div>
页: [1]
查看完整版本: 捕捉soap的xml形式