PHP& SoapClient:SOAP请求中缺少参数

时间:2013-01-03 20:47:15

标签: php web-services soap-client

我正在尝试解决SoapClient似乎没有将参数插入SOAP请求的问题。

简单测试无法在与网站相同的服务器上运行的Web服务,即Windows 8 Server和IIS 7.1上的PHP 5.3.13。最近两天前一直在努力,但现在失败了。除了更新之外,我不知道服务器安装有任何更改。

    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等故障排除过程中,我一直在使用许多不同的方法,结果相同。服务器已重新启动。我已经尝试了所有我能想到并试着尝试的东西。

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

1 个答案:

答案 0 :(得分:1)

在这种情况下,我发现我发送的参数没有完全与Web服务代码中的参数一样命名。通过改变上述内容:

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

为:

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

呼叫正常,参数不再为空!我不知道这种情况是否是这种情况所特有的,但在我有限的经验中,我没有看到一个情况,其中参数在另一端的名称是重要的。

无论如何,问题已经解决了。希望这有助于某人!