Web 服务 - PHP & SoapClient:SOAP 请求中缺少参数



我正在尝试修复一个问题,似乎SoapClient没有将参数插入到SOAP请求中。

简单的测试失败的web服务,运行在同一台服务器上的网站,PHP 5.3.13在Windows 8服务器和IIS 7.1。就在两天前,这个系统还在工作,但现在失灵了。除了更新之外,我不知道服务器安装有任何更改。

    function simpleTest(){
    $client = new SoapClient("http://server-sql:78/PCIWCTest/Service1.svc?wsdl", array( "trace" => 1 ));
    $result = $client->__soapCall("GetData",
    array('GetData'=> array('parameters'=> 'Hello')),
    array('soapaction' => 'http://server-sql:78/PCIWCTest/GetData'));
    $requXML = $client->__getLastRequest();
    $respXML = $client->__getLastResponse();
    debug($requXML);
    debug($respXML);
}

结果请求($requXML)是:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"><SOAP-ENV:Body><ns1:GetData/></SOAP-ENV:Body></SOAP-ENV:Envelope>

我假设在

之间应该有字符串'Hello'
<SOAP-ENV:Body><ns1:GetData/></SOAP-ENV:Body>    

标签,对吗?

我一直在使用许多不同的方法在故障排除过程中,如soap __call与相同的结果。服务器已重新启动。我已经试过了所有我能想到的和能找到的。

有人见过这个或有什么想法吗?

在本例中,我发现我发送的参数的命名与Web Service代码中的参数不完全相同。通过改变上面的:

array('GetData'=> array('parameters'=> 'Hello')),

:

array('GetData'=> array('value'=> 'Hello')),

调用工作正常,参数不再为空!我不知道这种行为是否是这种情况所特有的,但在我有限的经验中,我还没有见过另一端的参数命名很重要的情况。

无论如何,问题解决了。希望这对大家有所帮助!

相关内容

  • 没有找到相关文章

最新更新