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

时间:2012-05-14 09:57:21

标签: php wcf soap nusoap

我正在使用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数组吗?

由于

2 个答案:

答案 0 :(得分:0)

我认为这是最好的方法:

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

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

您需要根据需要添加许多guid,brandName和currencyCode。

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

我希望这会有所帮助。

答案 1 :(得分:0)

我自己遇到了这个...我发现将一个数组传递给一个键/值数组才能工作。

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