format URL用于调用PHP Web服务功能

时间:2015-09-14 12:09:57

标签: php web-services url

我试图直接从网址调用网络服务功能。

通过以下方式访问网络服务:

~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>

有人可以告诉我是否可以直接从网址调用该功能?

1 个答案:

答案 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来说就是一个例子)。