NUSoap - 使用类型化数组作为参数调用方法

问题描述 投票:0回答:2

我正在使用NuSoap库来调用WCF Web服务。

在调用具有类型化数组作为其中一个参数的特定Web方法时,我陷入困境。

通过SOAP UI调用Web方法时。我有这样的东西(它的工作原理)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:GetBalances>
         <tem:customerIds>
            <arr:guid>228B8C4E-D395-F87D-0000-00000013022F</arr:guid>           
         </tem:customerIds>
         <tem:brandName></tem:brandName>
         <tem:currencyCode>EUR</tem:currencyCode>
      </tem:GetBalances>
   </soapenv:Body>
</soapenv:Envelope>

我试图使用NUSoap这样调用同样的请求:

$params = array("customerIds" =>
            array(
                "guid" => '228B8C4E-D395-F87D-0000-00000013022F'
            ),
            "brandName" => "",
            "currencyCode" => "EUR"
        );

$result = $client->call('GetBalances', $params);

但不幸的是,我没有得到任何结果。

知道如何构造params数组吗?

谢谢

php wcf soap nusoap
2个回答
0
投票

我认为这是最好的方法:

$params = array(
             "guid" => "228B8C4E-D395-F87D-0000-00000013022F",
             "brandName" => "",
             "currencyCode" => "EUR"
);

$result = $client->call('GetBalances', $params);

您需要添加如此多的guid,brandName和currencyCode。

因此,您必须创建一个ComplexType,然后创建一个SOAP-Envelope来处理多个数组。

我希望这有帮助。


0
投票

刚碰到这个...我发现将一个数组传递给一个键/值数组来工作。

$params = array(
    "customerIds" => array("guid" => array("228B8C4E-D395-F87D-0000-00000013022F")),
    "brandName" => "",
    "currencyCode" => "EUR"
);
© www.soinside.com 2019 - 2024. All rights reserved.