使用PHP使用重复键进行SOAP调用
我尝试在PHP5中使用重复对象执行SOAP调用,如下所示:使用PHP使用重复键进行SOAP调用,php,soap,Php,Soap,我尝试在PHP5中使用重复对象执行SOAP调用,如下所示: <sources> <source> <name>somename</name> <id>someid</id> </source> <source> <name>somename</name> <id>someid</id> </source
<sources>
<source>
<name>somename</name>
<id>someid</id>
</source>
<source>
<name>somename</name>
<id>someid</id>
</source>
</sources>
如何使用uusoapcall函数对这些数据进行SOAP调用,因为它需要一个数组,而数组在PHP中不能有重复的键
到目前为止,我所尝试的:
$data = [
'sources' => [
'source' => [
[
'name' => 'somename',
'id' => 'someid'
],
[
'name' => 'somename',
'id' => 'someid'
]
]
]
]
这将导致“SOAP-ERROR:编码:对象没有'name'属性”
这也会导致“SOAP-ERROR:编码:对象没有'name'属性”
这还会导致“SOAP-ERROR:编码:对象没有“源”属性”。我尝试了这个,因为我发现它是对一个类似问题的回答:。我有。我已将XML消息编写为XML字符串,现在以编程方式将其转换为数组:
$sourcesAsXml = "<root><source><name>a</name></source><source><name>b</name></source></root>"
$dataArray = ['sources' => json_decode(json_encode(simplexml_load_string($sourcesAsXml)))]
我认为PHPSOAPClient需要一个对象而不是数组。尝试将
$data
转换为对象<代码>$data=(对象)$data代码>我不认为这是解决方案,因为当我只发布一个源代码时,这种格式可以很好地工作(参见第一个示例,刚刚添加)
$data = [
'sources' => [
'source' => [
(object) [
'name' => 'somename',
'id' => 'someid'
],
(object) [
'name' => 'somename',
'id' => 'someid'
]
]
]
]
$data = [
'sources' => [
[
'name' => 'somename',
'id' => 'someid'
],
[
'name' => 'somename',
'id' => 'someid'
]
]
]
$sourcesAsXml = "<root><source><name>a</name></source><source><name>b</name></source></root>"
$dataArray = ['sources' => json_decode(json_encode(simplexml_load_string($sourcesAsXml)))]
array ('sources' =>
stdClass::__set_state(array(
'source' =>
array (
0 =>
stdClass::__set_state(array(
'name' => 'a',
)),
1 =>
stdClass::__set_state(array(
'name' => 'b',
)),
),
))
)