我是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之外的服务交互.
有什么想法吗?建议吗?
我通常使用方法getFunctions 和getLastRequest 帮助我解决问题.首先,我看一下函数列表和WSDL.有时,WSDL和/或服务器未正确设置/配置/编码.所以这个功能列表可能没用.WSDL文件应该是权威的,但唉,蹩脚的编码器等......
所以有时候我必须在黑暗中进行刺,查看错误,然后查看最后一个请求.通过这个,您可以看到生成的实际XML.将其与一些有效的XML示例进行比较.
在与不想编写文档的编码人员打交道时,这已被证明是最有帮助的.顺便说一下,他们应该提供XML示例 - 而不是展示如何使用XYZ语言生成XML.PHP/Soap文档中可能有更多有用的信息
HTH
| 归档时间: |
|
| 查看次数: |
19116 次 |
| 最近记录: |