调试PHP SOAP调用

jer*_*iuh 5 php soap

我是SOAP新手并处理一个Web服务,以前似乎没有人使用PHP进行过接口.除了C#之外,他们没有示例代码,但我确实有.eServices.asmx提供了WSDL,如果这是正确的说法.

我得到的错误是"服务器无法识别HTTP标头SOAPAction的值:"使用该训练冒号表示没有传递任何值,也许.

我的代码看起来像这样:

$URL = "http://nolaflash.example.com/xxxWS/eServices.asmx";

$namespace="http://www.example.com/webservices/";

include("SOAP/Client.php");

$soapclient = new SOAP_Client($URL);

$xml_data = // valid XML is here;

$res = $soapclient->UpdateData('usrname','pass',$xml_data);
Run Code Online (Sandbox Code Playgroud)

但我也尝试过:

$param = array('usrname','pass',$xml_data);
$res = $soapclient->call('UpdateData',$param, $namespace);
Run Code Online (Sandbox Code Playgroud)

谷歌搜索表明此错误是命名空间问题.我所拥有的C#代码只有一个命名空间引用:

[System.Web.Services.WebServiceBindingAttribute(Name="eServicesSoap", Namespace="http://www.example.com/webservices/")]
Run Code Online (Sandbox Code Playgroud)

如果我在函数调用之前将$ soapclient转储到屏幕上,我看到它已经从eServices.asmx接收了数据.

我不确定如何调试这个并且服务人员不熟悉与.NET IDE之外的服务交互.

有什么想法吗?建议吗?

d-_*_*_-b 9

我通常使用方法getFunctionsgetLastRequest 帮助我解决问题.首先,我看一下函数列表和WSDL.有时,WSDL和/或服务器未正确设置/配置/编码.所以这个功能列表可能没用.WSDL文件应该是权威的,但唉,蹩脚的编码器等......

所以有时候我必须在黑暗中进行刺,查看错误,然后查看最后一个请求.通过这个,您可以看到生成的实际XML.将其与一些有效的XML示例进行比较.

在与不想编写文档的编码人员打交道时,这已被证明是最有帮助的.顺便说一下,他们应该提供XML示例 - 而不是展示如何使用XYZ语言生成XML.PHP/Soap文档中可能有更多有用的信息

HTH