php使用SOAP与不同的SoapAction

时间:2011-11-24 10:35:13

标签: php soap

我正在使用一个WSDL,它在标题中有一个与我期望的不同的SOAP Action。在我调用Web服务的那一刻,我就像一个Web服务的.NET描述站点。在这个例子中它是

https://preprod.squidcard.com/ytm/sQuidpages/sQuidPWS.asmx

我应该实际调用什么URL来获取getPurseBalance()方法,因为似乎没有定义WSDL中的SOAP Action中的选项,无论如何我可以确定这个或者我应该转到Web服务提供商?

谢谢,

2 个答案:

答案 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');