用php调用wsdl方法时出错

时间:2013-01-31 16:00:54

标签: php wsdl lighttpd

我对Akamai API有疑问。

我已经使用这个系统(http://www.wsdltophp.com/)将WSDL转换为PHP中的对象。我这样做是因为我手边有问题。但问题仍然存在:

WSDL服务的一个方法是deleteStreamEvent,它接收两个参数:streamId和eventName。所以电话是:

$soapClient->deleteStreamEvent(array ('streamId' => $id, 'eventName' => 'name'));

但问题是它将此XML发送到服务器:

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="https://control.akamai.com/ArchiveManagementService.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:enc="http://www.w3.org/2003/05/soap-encoding">
    <env:Body>
        <ns1:deleteStreamEvent env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
            <streamId xsi:type="xsd:int">1</streamId>
            <eventName xsi:nil="true"/>
        </ns1:deleteStreamEvent>
    </env:Body>
</env:Envelope>

所以,正如你所看到的那样,所有我发送的数字都改为“1”。为什么会这样?这是我第一次看到这种奇怪的行为......

我正在使用PHP 5.3和lighttpd服务器。

2 个答案:

答案 0 :(得分:1)

您可以通过取消标记名为Send An Array As Parameter的选项来全局解决此问题。然后再次生成包,它会很好用。

答案 1 :(得分:0)

我发现了问题...

在电话中:

self::getSoapClient ( )->deleteStreamEvent ( array ( 'streamId' => $_streamId, 'eventName' => $_eventName ) )

我要把它改成:

self::getSoapClient ( )->deleteStreamEvent ( $_streamId, $_eventName )

:D我希望这可以帮助其他人......

谢谢!