Makrolar kullanarak dilediğiniz zaman HTTP(S) sunucusuna veri gönderebilirsiniz. Hangi verileri göndermek istediğinizi seçerek bunları dilediğiniz gibi yapılandırabilirsiniz. Bu yolu izleyerek, veriyi daha önceden kurulan bir hizmete uyarlayabilirsiniz.

Güvenlik önlemleri:

  • HTTP(S) istemci isteği özelliği, varsayılan olarak devre dışıdır. Sistem yöneticisi, şu ayarları yaparak özelliği açık bir biçimde etkinleştirmelidir: HttpClient > Modu: Açık (xConfiguration HttpClient Modu: Açık).

  • Sistem yöneticisi, HttpClient > AllowHTTP öğesini False olarak ayarlayarak HTTP kullanımını önleyebilir (xConfiguration HttpClient AllowHTTP: False).

  • Sistem yöneticisi, cihazın veri göndermeye izinli olduğu bir HTTP(S) sunucuları listesi belirleyebilir. (Bkz. xCommand HttpClient Ana Bilgisayar Adına İzin Verme komutları.)

  • Eşzamanlı HTTP(S) isteklerinin sayısı sınırlıdır.

Bu makalede bahsedilen yapılandırmalar hem cihazın web arabiriminde hem de API'de mevcuttur. Komutlar API'de mevcuttur. Web arabirimine erişim ve API kullanımına dair bilgi edinmek için Gelişmiş Ayarlar makalesini okuyun.

İzin Verilen HTTP(S) Sunucuları Listesi

Sistem yöneticisi bu komutları izin verilen en fazla on HTTP(S) sunucusunu (ana bilgisayarlar) kurmak ve sürdürmek için kullanabilir:

  • xCommand HttpClient Ana Bilgisayar Adına İzin Ver İfade Ekle: <Ana bilgisayar adıyla eşleşen normal ifade veya HTTP(S) sunucusunun IP adresi>

  • xCommand HttpClientAna Bilgisayar Adına İzin Ver Temizle

  • xCommand HttpClientAna Bilgisayar Adına İzin Ver Listesi

  • xCommand HttpClientAna Bilgisayar Adına İzin Ver Kimliği Kaldır <listedeki bir girişin kimliği>

Liste boş değilse, yalnızca listedeki sunuculara HTTP(S) istekleri gönderebilirsiniz. Liste boş ise, herhangi bir HTTP(S) sunucusuna istekler gönderebilirsiniz.

İzin verilen sunucular listesi kontrolü, hem güvensiz (HTTP) hem de güenli (HTTPS) veri transferi kullanılırken yapılır.

Sertifika Doğrulaması Olmaksızın HTTPS

HTTPS üzerinden istekler gönderirken cihaz varsayılan olarak HTTPS sunucusunun sertifikasını kontrol eder. HTTPS sunucusu sertifikasının geçerli olmadığı görüşürse, bir hata mesajı alırsınız. cihaz bu sunucuya hiçbir veri göndermez.

HTTPS'yi sertifika doğrulaması ile kullanmanızı öneririz. Sertifika doğrulamasının yapılması mümkün değilse, sistem yöneticisi şu ayarı yapabilir: HttpClient > GüvensizHTTPS'yeİzinVer: Açık (xConfiguration HttpClient GüvensizHTTPS'yeİzinVer: Açık). Bu, sunucu sertifikasını doğrulamadan HTTPS kullanımına izin verir.

HTTP(S) İstekleri Gönderme

HTTP(S) istemci isteği özelliği etkinleştirildiğinde, aşağıdaki komutları bir HTTP(S) sunucusuna istek göndermek için kullanabilirsiniz: <method>; Post, Put, Patch, Get veya Delete'dir.

  • xCommand HttpClient <Method> [AllowInsecureHTTPS: <True/False>] [Header: <Header text>] [ResponseSizeLimit: <Maximum response size>] [ResultBody: <None/PlainText/Base64>] [Timeout: <Timeout period>] Url: <URL to send the request to>

Başlık alanları eklemek isteğe bağlıdır ancak en çok 20 alan ekleyebilirsiniz.

GüvensizHTTPS'yeİzinVer parametresi, yalnızca sistem yöneticisinin HTTPS'nin sunucu sertifikası doğrulanmadan kullanımına izin vermesi durumunda etkili olur. İzin verildiyse, parametrenin Doğru olarak ayarlanması durumunda sunucu sertifikasını doğrulamadan sunucuya veri gönderebilirsiniz. Parametreyi dışarıda bırakır veya Yanlış olarak ayarlarsanız, sertifika doğrulamasının başarısız olması durumunda veri gönderilmez.

ResposenSizeLimit parametresi, cihazın sunucudan bir yanıt olarak kabul ettiği maksimum yük boyutudur (bayt). Yanıt yükü bu maksimum boyuttan daha büyükse, komut, bir durum hatası döndürür. Hata mesajında maksimum dosya boyutunun aşıldığı belirtilir. Ancak, bunun sunucu tarafında hiçbir etkisi yoktur; sunucu, isteği doğru şekilde alıp işlemiştir.

Komut sonucunda sunucudan gelen HTTP yanıtı gövdesinin nasıl biçimlendirileceğine karar vermek için ResultBody parametresini kullanın. Üç seçeneğiniz vardır:

  • None: HTTP yanıtının gövdesi komut sonucuna eklenmez.

  • Base64: Base64, gövdeyi sonuca eklemeden önce kodlar.

  • PlainText: Gövde, sonucun içine düz metin olarak eklenir. Yanıtta yazdırılamayan harfler varsa, komut yazdırılamayan verilerle karşılaşıldığını belirten bir mesaj ile durum hatası döndürür.

Zaman aşımı süresini (saniye) ayarlamak için Timeout parametresini kullanın. Bu süre içinde istek tamamlanmazsa, API bir hata döndürür.

Komutu verdikten hemen sonra veri yükünü (veriyi) girin. Satır sonu da dahil, girdiğiniz her şey veri yükünün bir parçasıdır. Bitirdiğinizde, bir satır sonu (“\n”) ve yalnızca ardından bir satır sonu gelen bir nokta içeren ayrı bir satır (“.\n”) ile sonlandırın. Böylece komut çalıştırılır ve veri sunucuya gönderilir.

Örnekler

Mesaj ana metni her iki örnekte de JSON'dır. Mesajları alan hizmetin beklenen biçimine bağlı olarak,, bu herhangi bir biçimde olabilir.

Örnek 1: HTTP Post kullanarak IOT cihaz denetimi

İşte, Philps Hue Bridge'e bağlı bir ışığı açan bir makro işlevi:

function hue_command(data) {
  var url = 'http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state';
  var headers = 'Content-Type: application/json';
  var command = '{"on":true}';
  xapi.command('HttpClient Put', { 'Url': url, 'Header': headers }, command);
}

API kullanarak aynısını komut satırında da yapailirsiniz.

xcommand HttpClient Put Header: "Content-Type: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state"
{"on":true}
.

Örnek 2: HTTP Post kullanarak verileri izleme aracına gönderme

xcommand HttpClient Post Header: "Content-Type: application/json" URL: "https://mymonitoringserver.com/service/devicemonitoring"
{"Message":"A user reported an issue with this system","systemName":"BoardRoom 4th floor","softwareVersion":"ce9.6.0","softwareReleaseDate":"2018-12-13","videoMonitors":"Dual"}
.

Ek Bilgiler

Özelleştirme kılavuzu içerisinde HTTP istemci isteklerinin nasıl kullanılacağına dair daha fazla bilgi bulabilirsiniz. En güncel sürümü seçin.

Cisco desteği (TAC) makrolar da dahil, üçüncü taraf kodunda hata ayıklamayı desteklemez. Makrolar ve üçüncü taraf kodlarla ilgili yardıma ihtiyacınız olması durumunda, şuraya göz atın: Cisco İşbirliği Geliştirici topluluğu Ayrıca, bu sitede çok sayıda geliştirici ve entegratör kaynakları vardır.