嘗試調試腳本以查看它是否實際發出請求,PHP的SoapClient對象使其非常容易。看看SoapClient::_getLastRequest和SoapClient::_getLastResponse。
如果你想要更低一點的東西,ngrep是一個很好的簡單工具,可以關注線路上發生的事情。
把這個簡單的PHP腳本...
<?php
$client = new SoapClient('http://www.27seconds.com/kb/ws/Articles.asmx?WSDL');
$article = $client->GetArticle(array('articleId' => 7));
執行ngrep port 80 &
,然後執行上面的腳本將轉儲交通,它應該類似於此...
##
T 208.106.153.223:80 -> 10.0.2.15:40760 [AS]
..
##
T 10.0.2.15:40760 -> 208.106.153.223:80 [AP]
POST /kb/ws/Articles.asmx HTTP/1.1..Host: www.27seconds.com..Connection: Keep-Alive..User-Agent: PHP-SOAP/5.3.10-1ubuntu3.6..Content-Type: text/xml; charset=utf-8..
SOAPAction: "http://dsetzer.27seconds.com/ws/GetArticle"..Content-Length: 279....<?xml version="1.0" encoding="UTF-8"?>.<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://sc
hemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://dsetzer.27seconds.com/ws/"><SOAP-ENV:Body><ns1:GetArticle><ns1:articleId>7</ns1:articleId></ns1:GetArticle></SOA
P-ENV:Body></SOAP-ENV:Envelope>.
#
T 208.106.153.223:80 -> 10.0.2.15:40760 [A]
......
#
T 208.106.153.223:80 -> 10.0.2.15:40760 [A]
HTTP/1.1 200 OK..Date: Fri, 21 Jun 2013 21:11:21 GMT..Server: Microsoft-IIS/6.0..X-Powered-By: ASP.NET..X-AspNet-Version: 2.0.50727..Cache-Control: private, max-age
=0..Content-Type: text/xml; charset=utf-8..Content-Length: 4804....<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/
envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetArticleResponse xmlns="http://dsetzer.2
7seconds.com/ws/"><GetArticleResult><xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msda
ta"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element
name="Articles"><xs:complexType><xs:sequence><xs:element name="ArticleID" type="xs:int" minOccurs="0" /><xs:element name="ArticleTitle" type="xs:string" minOccurs="
0" /><xs:element name="ArticleSummary" type="xs:string" minOccurs="0" /><xs:element name="ArticleAuthorID" type="xs:int" minOccurs="0" /><xs:element name="ArticlePu
blishDate" type="xs:dateTime" minOccurs="0" /><xs:element name="AuthorName" type="xs:string" minOccurs="0" /><xs:element name="AuthorEmail" type="xs:string" minOccu
rs="0" /><xs:element name="AuthorHomepage" type="xs:string" minOccurs="0" /><xs:element name="ArticleBody" t
##
T 208.106.153.223:80 -> 10.0.2.15:40760 [AP]
ype="xs:string" minOccurs="0
##
T 208.106.153.223:80 -> 10.0.2.15:40760 [A]
" /><xs:element name="ArticleRating" type="xs:double" minOccurs="0" /></xs:sequence></xs:complexType></xs:element><xs:element name="Authors"><xs:complexType><xs:seq
uence><xs:element name="AuthorID" type="xs:int" minOccurs="0" /><xs:element name="AuthorName" type="xs:string" minOccurs="0" /><xs:element name="AuthorEmail" type="
xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element><xs:element name="Applicables"><xs:complexType><xs:sequence><xs:element name="appID" type="xs
:int" minOccurs="0" /><xs:element name="appDescr" type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element><xs:element name="Keywords"><xs:compl
exType><xs:sequence><xs:element name="KeyID" type="xs:int" minOccurs="0" /><xs:element name="KeyArticleId" type="xs:int" minOccurs="0" /><xs:element name="Keyword"
type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:msdata="ur
n:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"><NewDataSet xmlns=""><Articles diffgr:id="Articles1" msdata:rowOrder="0
"><ArticleID>7</ArticleID><ArticleTitle>Handle double quotes in a form.</ArticleTitle><ArticleSummary>When pulling data from a form or database you can into trouble
if the data contains a double quote (&quot;).</ArticleSummary><ArticleAuthorID>1</ArticleAuthorID><Arti
##
T 208.106.153.223:80 -> 10.0.2.15:40760 [AP]
clePublishDate>2002-03-05T11
##
T 208.106.153.223:80 -> 10.0.2.15:40760 [A]
:40:54-05:00</ArticlePublishDate><AuthorName>Douglas L. Setzer, II</AuthorName><AuthorEmail>[email protected]</AuthorEmail><AuthorHomepage>http://www.27seconds.
com</AuthorHomepage><ArticleBody><p>..When I was dynamically populating form values, I found that if the data has a double quote (&qout;) in it, it would
cut off the data entered in the form...</p>....<p>..To solve this, I found that I could simple Server.HtmlEncode the value and all was well. Except whe
n I was populating from a database and the data was NULL which caused an error for Server.HtmlEncode. So, I whipped up this little function:..</p>....<p&g
t;..<div style="width=450;height=300;overflow=scroll;">..<pre>..Function formEncode(formValue)..Dim m_sOut.. m_sOut = formValue.....If IsNull(m_sOut)
Then....m_sOut = ""...Else....m_sOut = Server.HTMLEncode(m_sOut)...End If.....formEncode = m_sOut....End Function..</pre>..</div>..</p>....<p&
gt;This is used when you assign a value to the form field:</p>....<p>..<div style="width=450;height=300;overflow=scroll;">..<pre>..&lt;i
nput type="text" name="example" value="&lt;%=formEncode("The ""test"" is good.") %&gt;"&gt;..</pre>..</div>..</p></ArticleBody></Artic
les><Authors diffgr:id="Authors1" msdata:rowOrder="0"><AuthorID>1</AuthorID><AuthorName>Douglas L. Setzer, I
##
T 208.106.153.223:80 -> 10.0.2.15:40760 [AP]
I</AuthorName><AuthorEmail>d
#
T 208.106.153.223:80 -> 10.0.2.15:40760 [AP]
[email protected]</AuthorEmail></Authors><Applicables diffgr:id="Applicables1" msdata:rowOrder="0"><appID>1</appID><appDescr>Active Server Pages (ASP)</appDescr>
</Applicables><Keywords diffgr:id="Keywords1" msdata:rowOrder="0"><KeyID>386</KeyID><KeyArticleId>7</KeyArticleId><Keyword>CHR(34)</Keyword></Keywords><Keywords dif
fgr:id="Keywords2" msdata:rowOrder="1"><KeyID>388</KeyID><KeyArticleId>7</KeyArticleId><Keyword>DOUBLE QUOTE</Keyword></Keywords><Keywords diffgr:id="Keywords3" msd
ata:rowOrder="2"><KeyID>387</KeyID><KeyArticleId>7</KeyArticleId><Keyword>QUOTE</Keyword></Keywords></NewDataSet></diffgr:diffgram></GetArticleResult></GetArticleRe
sponse></soap:Body></soap:Envelope>
#[email protected]:~# ##
T 208.106.153.223:80 -> 10.0.2.15:40760 [A]
......
#
T 208.106.153.223:80 -> 10.0.2.15:40760 [AF]
......
公告SOAP調用?還有很多其他方法可以做到這一點,但調試應該是您的第一個停靠點。 :)
祝你好運,
安東尼。