我正在使用一个WSDL,它在标题中有一个与我期望的不同的SOAP Action。在我调用Web服务的那一刻,我就像一个Web服务的.NET描述站点。在这个例子中它是
https://preprod.squidcard.com/ytm/sQuidpages/sQuidPWS.asmx
我应该实际调用什么URL来获取getPurseBalance()方法,因为似乎没有定义WSDL中的SOAP Action中的选项,无论如何我可以确定这个或者我应该转到Web服务提供商?
谢谢,
答案 0 :(得分:2)
您不应该调用URL,您应该将XML发布到此直接相同的页面。要了解要发送到网络服务的内容,您可以查看您的网址:
https://preprod.squidcard.com/ytm/sQuidpages/sQuidPWS.asmx?op=getPurseBalance
在这里,您还可以查看您的SoapAction和其他要发送的标题:
POST /ytm/sQuidpages/sQuidPWS.asmx HTTP/1.1
Host: preprod.squidcard.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://secure.squidcard.com/getPurseBalance"
如果您不想手动创建XML,也可以使用PHP的SoapClient类。您可以在此处找到更多信息:
http://www.php.net/manual/en/class.soapclient.php
$client = new SoapClient("https://preprod.squidcard.com/ytm/sQuidpages/sQuidPWS.asmx?WSDL");
var_dump($client->__getFunctions());
$client->__soapCall("getPurseBalance", array('your parameters'));
答案 1 :(得分:0)
请参阅此http://www.php.net/manual/en/soapclient.setlocation.php
我认为你应该使用
$client->__setLocation('https://preprod.squidcard.com/ytm/sQuidpages/sQuidPWS.asmx');