数组值在PHP SoapClient调用Cisco电话系统时消失
我正在尝试使用Cisco电话系统()提供的SOAP服务,以获取给定电话集的当前状态。我有一个电话名数组,我正试图将其传递给服务,但是,数组的值正在某处被吃掉 如下所示的项目数组:数组值在PHP SoapClient调用Cisco电话系统时消失,php,soap,cisco,Php,Soap,Cisco,我正在尝试使用Cisco电话系统()提供的SOAP服务,以获取给定电话集的当前状态。我有一个电话名数组,我正试图将其传递给服务,但是,数组的值正在某处被吃掉 如下所示的项目数组: $items = array( 0 => "SEP0004F2E57F8C", 1 => "SEP001111BF8758", 2 => "SEP001320BD485C" ); 正在尝试调用该方法: $client = new SoapClient( "https:
$items = array(
0 => "SEP0004F2E57F8C",
1 => "SEP001111BF8758",
2 => "SEP001320BD485C"
);
正在尝试调用该方法:
$client = new SoapClient(
"https://x.x.x.x/realtimeservice/services/RisPort?wsdl",
array(
"login" => "admin",
"password"=> "xxxxx",
"trace" => true
)
);
$devices = $client->SelectCmDevice(
"",
array(
"SelectBy" => "Name",
"Status" => "Any",
"SelectedItems" => $items
)
);
调试完整请求时,我会得到以下结果:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
mlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://schemas.cisco.com/ast/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:SelectCmDevice>
<StateInfo xsi:type="xsd:string"></StateInfo>
<CmSelectionCriteria xsi:type="ns1:CmSelectionCriteria">
<MaxReturnedDevices xsi:nil="true"/>
<Class xsi:nil="true"/>
<Model xsi:nil="true"/>
<Status xsi:type="xsd:string">Any</Status>
<NodeName xsi:nil="true"/>
<SelectBy xsi:type="xsd:string">Name</SelectBy>
<SelectItems SOAP-ENC:arrayType="ns1:SelectItem[3]" xsi:type="ns1:SelectItems">
<item xsi:type="ns1:SelectItem"/>
<item xsi:type="ns1:SelectItem"/>
<item xsi:type="ns1:SelectItem"/>
</SelectItems>
</CmSelectionCriteria>
</ns1:SelectCmDevice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
任何
名称
计算了正确数量的元素并将其插入到对象中,但是实际的项目名称本身消失了。我想应该是SEP0004F2E57F8C等等,但我似乎不知道如何让它做到这一点
提前感谢您的帮助 可能是API对数组的期望值不同。事实上,正确的项目数量是有希望的 在他们的API中是否有一种方法可以一次创建一个选定项目的列表?i、 e.开始选择项目,输入您想要的每个项目,然后结束选择项目?我不确定它是否理解Cisco方面的数组参数。另外,您是否尝试以您正在创建的表单手动生成查询(即,如果复制此查询,请在尝试获取ID的位置插入ID),是否有效
Jacob进一步检查,Cisco的API希望这些项目的格式非常奇怪,因此我已经转向手动创建完整的请求XML,而不是依赖SoapClient为我构建它。虽然没有那么干净漂亮,但它完成了任务。经过几个小时的搜索和尝试,我已经解决了这个问题
$array['SelectBy'] = "Name";
$array['Status'] = "Any";
$array['SelectItems']['SelectItem[0]']['Item'] = "SEP0015F9B16122";
$array['SelectItems']['SelectItem[1]']['Item'] = "SEP0015F9B16123";
$devices = $client->SelectCmDevice(
"",
$array
);
记住:未知的状态不会出现在结果中