2009-08-11 3 views
1

Cisco電話システム(documentation)が提供するSOAPサービスを使用して、特定の電話機の現在のステータスを取得しようとしています。PHP SoapClientコールで配列値が消えます

$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> 

正しい数の< Item>要素が数えられ、SelectItems>オブジェクトに挿入されましたが、実際の項目名自体はなくなりました。私はそれが<アイテム> SEP0004F2E57F8C </Item>などである必要があると思うだろうが、それをする方法を理解できないようだ。

ご協力いただきありがとうございます!

答えて

0

APIが配列に対して異なる値を予期している可能性があります。正しい数の項目が含まれているということは有望です。

一度に1アイテムずつ選択したアイテムのリストをAPIに作成する方法はありますか?アイテムの選択を開始し、希望する各アイテムを入力し、アイテムの選択を終了しますか?私はそれがシスコ側のArray議論を理解しているとは確信していません。また、作成しているフォームで手動でクエリを生成しようとしましたか(つまり、このクエリをコピーすると、取得しようとしている場所にIDを挿入します)、動作しますか?さらに検査で

ヤコブ

0

は、シスコのAPIは、とにかく本当に奇妙な形式で項目を望んでいるので、私はちょうど手で完全な要求XMLを作成するのではなく私のためにそれを構築するためのSoapClientに頼ることに切り替えているのです。すてきで清潔ではありませんが、仕事は終わります。

2

検索して数時間試した後、私はそれを解決しました。

$array['SelectBy'] = "Name"; 

$array['Status'] = "Any"; 

$array['SelectItems']['SelectItem[0]']['Item'] = "SEP0015F9B16122"; 

$array['SelectItems']['SelectItem[1]']['Item'] = "SEP0015F9B16123"; 


$devices = $client->SelectCmDevice( 
    "", 
    $array 
); 

覚えておいてください:不明のステータスは結果に表示されません。

関連する問題