我正在尝试创建一个肥皂请求,我需要将肥皂xml转换为php数组。 但是我陷入了无法弄清楚如何正确将属性设置为数组的位置。我对肥皂很陌生,良好的解释将不胜感激。这是我到目前为止所做的。
我想创造什么
<arg0>
<ns2:coverType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="ns2:FamilyCoverType">
<ns2:abc>1978-04-03</ns2:abc>
<ns2:def>1980-04-03</ns2:def>
<ns2:pqr>2016-04-10</ns2:pqr>
<ns2:xyz>2016-05-03</ns2:xyz>
</ns2:coverType>
</arg0>
我的阵列
$data = array(
'arg0' => array(
'coverType' => array(
'abc' => $abc,
'def' => $def,
'pqr' => $pqr,
'xyz' => $xyz,
)
)
);
一切都很好,除了
xsi:type="ns2:FamilyCoverType">
如何在我的数组中设置上述属性?请帮忙。
我强烈建议您使用WSDL来php生成器,例如PackageGenerator,因为您根本不会想知道如何构建您的请求。如果您将 Eclipse PDT 或任何其他良好的 IDE 与生成的 PHP SDK 一起使用,您将在几秒钟内发送请求。此外,您将非常轻松地处理响应,因为您将知道 PHP 对象,因为它们将在 SDK 中作为 PHP 类生成。
经过两个星期的忙碌,我终于找到了解决方案。所以我在这里发布我的答案,以便有人可以节省他的时间。
我们可以轻松地完成上述事情,
$param = new SoapVar('
<arg0>
<ns2:coverType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:FamilyCoverType">
<ns2:abc>' . $data['abc'] . '</ns2:abc>
<ns2:def>' . $data['def'] . '</ns2:def>
<ns2:pqr>' . $data['pqr'] . '</ns2:pqr>
<ns2:xyz>' . $data['xyz'] . '</ns2:xyz>
</ns2:coverType>
</arg0>', XSD_ANYXML);
然后我们可以得到这样的响应,
$response = $client->your_calling_function($param);
就目前看来,
XSD_ANYXML
是关键。
如果有人仍然有问题,我真的很乐意提供帮助。 不要犹豫,寻求帮助。