我试图直接从网址调用网络服务功能。
通过以下方式访问网络服务:
~mysite~/server.php?wsdl
这将显示所有Web服务的列表。我试图访问的是:
<operation name="fetchSplash">
<documentation>Fetch Home Page</documentation>
<input message="tns:fetchSplashIn"/>
<output message="tns:fetchSplashOut"/>
</operation>
需要两个参数:
function fetchSplash($sessionCode,$brand=null)
所以我想我可以通过做类似的事情来调用它:
/server.php?wsdl/fetchSplash&sessionCode=A6C298B9-359143D6-A591-8D7016F0B72E&brand=1
但是这会回来:
<SOAP-ENV:Fault>
<faultcode>Sender</faultcode>
<faultstring>Invalid XML</faultstring>
</SOAP-ENV:Fault>
有人可以告诉我是否可以直接从网址调用该功能?
答案 0 :(得分:2)
通过使用地址栏中的普通网址,不,这是不可能的(除非有人会在soap协议之上实现这一点)。
soap的工作方式是使用一些xml作为有效负载执行http POST请求。像这样(xml未经测试,可能不是100%正确):
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:fetchSplash>
<m:sessionCode>A6C298B9-359143D6-A591-8D7016F0B72E</m:sessionCode>
<m:brand>1</m:brand>
</m:fetchSplash>
</soap:Body>
</soap:Envelope>
您应该能够使用可以进行自定义http请求的应用程序将此请求发送到您的服务器(&#34; Advanced Rest Client&#34;对于chrome来说就是一个例子)。