Dizi değerleri Cisco telefon sistemine PHP SoapClient çağrı yok

3 Cevap php

Ben (documentation), telefonların belirli bir dizi geçerli durumunu almak için Cisco telefon sistemi tarafından sağlanan bir SOAP hizmeti kullanmak için çalışılıyor. Ben servise geçmek için çalışıyorum telefon isimleri, bir dizi, ancak, dizinin değerleri bir yere yemiş olan var

Böylece gibi öğelerin dizi:

$items = array(
    0 => "SEP0004F2E57F8C",
    1 => "SEP001111BF8758",
    2 => "SEP001320BD485C"
);

Yöntemini çağırmak için çalışılıyor:

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

Ben tam isteği hata ayıklama ben şu olsun:

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

Elemanlarının doğru sayısı sayılır ve nesnesi haline sokulmuş, ancak, asıl öğe adları kendileri gittiler. Ben vb SEP0004F2E57F8C olması gerekiyor tahmin ediyorum, ama ben bunu yapmak nasıl anlamaya görünüyor olamaz.

Herhangi bir yardım için şimdiden teşekkür ederiz!

3 Cevap

Birkaç saat arama ve denedikten sonra ben bunu çözdüm.

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

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

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

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


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

Sadece hatırlamak: bilinmeyen Durumu sonucu göstermek olmaz.

Bu API dizi için farklı değerler bekliyor olduğunu olabilir. Öğelerin doğru sayıda dahil olması umut vericidir.

Bir seferde seçilen öğelerin bir öğe listesini oluşturmak için kendi API bir yolu var mı? yani öğeleri seçerek başlayın, size istediğiniz her öğeyi girin, ardından öğeleri seçerek sona? Ben Cisco tarafında Array argümanı anlayış olduğundan emin değilim. Ayrıca, elle çalışır (Bu sorguyu kopyalayıp varsa, onları almak için çalışıyoruz kimlikleri eklemek yani) yaratıyor şeklinde sorgu oluşturmak için çalıştık?

Jacob

İncelemeyi, Cisco'nun API zaten gerçekten garip bir biçimde öğeleri istiyor, bu yüzden ben sadece elle tam istek XML oluşturmak yerine benim için inşa SoapClient güvenerek açtınız duyuyorum. Gibi güzel ve temiz, ama iş yapmış olur değil.