매크로를 사용하면 필요할 때마다 HTTP (S) 서버로 데이터를 보낼 수 있어요. 어떤 데이터가 전송되고 어떻게 구성되는지를 제어할 수 있어 기존 서비스에 사용할 데이터를 간단하게 조정할 수 있어요.
보안 조치:
-
HTTP (S) 클라이언트 요청 기능이 기본적으로 비활성화돼요. 시스템 관리자가 HTTP : 켜기) 로 설정하여 기능을 명시적으로 활성화해야 해요.
-
시스템 관리자가 : False) 로 설정하여 HTTP 사용을 방지할 수 있어요.
-
시스템 관리자가 장치가 데이터를 보낼 수 있는 HTTP (S) 서버 목록을 지정할 수 있어요. (
X커맨드 HTTPClient 호스트 이름 허용 명령참조.) -
동시 HTTP (S) 요청 수가 제한되어 있어요.
이 글에 언급된 구성은 장치의 웹 인터페이스와 API에서 모두 사용할 수 있어요. 명령은 API를 통해 사용할 수 있어요. 웹 인터페이스에 액세스하고 API를 사용하는 방법에 대해서는 고급 설정 문서를 읽어보세요.
허용된 HTTP (S) 서버 목록
시스템 관리자가 이 명령으로 허용된 HTTP (S) 서버 (호스트) 목록을 최대 10개까지 설정하고 유지할 수 있어요.
-
xCommand HTTPClient가 호스트 이름 추가 표현식을 허용해요:<Regular expression that matches the host name or IP address of the HTTP (S) server> -
x커맨드: HTTP클라이언트, 호스트 이름 지우기 허용 -
xCommand HTTP클라이언트 허용 호스트 이름 목록 -
xCommand HTTPClient 허용 호스트 이름 제거 ID:<id of an entry in the list>
목록에 서버 항목이 있으면 해당 서버에만 HTTP (S) 요청을 보낼 수 있어요. 하지만 목록이 비어 있으면 아무 HTTP (S) 서버로든 요청을 보낼 수 있어요.
허용된 서버 목록 검사는 비보안 (HTTP) 데이터 전송과 보안 (HTTPS) 데이터 전송을 모두 사용할 때 수행돼요.
인증서 검증 없는 HTTPS
HTTPS로 요청을 보낼 때 장치는 기본적으로 HTTPS 서버의 인증서를 검사해요. HTTPS 서버 인증서가 유효하지 않으면 오류 메시지가 뜹니다. 기기가 그 서버에 데이터를 보내지 않아요.
인증서 검증과 함께 HTTPS를 사용하는 것이 좋아요. 인증서 검증이 불가능하면 시스템 관리자가 HTTP
:
켜기).
이렇게 하면 서버 인증서를 확인하지 않고도 HTTPS를 사용할 수 있어요.
HTTP (S) 요청 보내기
HTTP (S) 클라이언트 요청 기능이 활성화되면 다음 명령을 사용하여 HTTP (S) 서버로 요청을 보낼 수 있어요.
<method>게시
,
올리기,
패치
,
가져오기
,
삭제 중 하나예요
.
-
xCommand HTTP 클라이언트 [안전하지 않은 HTTP 허용:] [헤더:] [응답 크기 제한:] [결과 본문:] [타임아웃:] URL:<Method><True/False> <Header text><Maximum response size><None/PlainText/Base64> <Timeout period><URL to send the request to>
헤더 필드 추가는 선택사항이고 필드를 20개까지 추가할 수 있어요.
AllowInSecureHTTPS
매개변수는 시스템 관리자가 서버 인증서를 확인하지 않고 HTTPS 사용을 허용한 경우에만 효과가 있어요. 그렇다면 파라미터가
True로 설정되어 있으면 서버 인증서를 확인하지 않고 서버에 데이터를 보낼 수 있어요. 매개변수를 생략하거나
False로 설정하면 인증서 검증에 실패하면 데이터가 전송되지 않아요.
ResponSensizeLimit
매개변수는 장치가 서버의 응답으로 받아들이는 최대 페이로드 크기 (바이트) 예요. 응답 페이로드가 이 최대 크기보다 크면 명령이 상태 오류를 반환해요. 오류 메시지에 최대 파일 크기를 초과했다고 하네요. 하지만 서버 측에서는 아무 영향이 없어요. 서버가 요청을 제대로 받아서 처리했어요.
ResultBody
매개 변수를 사용하여 명령 결과에서 서버의 HTTP 응답 본문 형식을 지정하는 방법을 결정하세요. 세 가지 옵션이 있어요.
-
없음: 명령 결과에 HTTP 응답 본문을 포함하지 마세요. -
Base64: Base64는 결과에 포함하기 전에 본문을 인코딩해요. -
일반 텍스트: 결과에 본문을 일반 텍스트로 포함하세요. 응답에 인쇄할 수 없는 문자가 포함된 경우, 명령은 인쇄할 수 없는 데이터를 발견했다는 메시지와 함께 상태 오류를 반환해요.
타임아웃
파라미터를 써서 타임아웃 기간 (초) 을 설정하세요. 이 기간 동안 요청이 완료되지 않으면 API에서 오류를 반환해요.
명령 실행 후 바로 페이로드 (데이터) 를 입력하세요. 줄 바꿈을 포함하여 입력하는 모든 것이 페이로드의 일부예요. 끝나면 줄 바꿈 (“\n”) 하고 마침표만 포함하는 별도의 줄에 줄 바꿈 (”) 으로 끝내세요.\n”). 이제 명령이 실행되고 데이터가 서버로 전송돼요.
예시들이에요
두 예시 모두 메시지 본문이 JSON이에요. 메시지 받는 서비스의 예상 형식에 따라 어떤 형식이든 될 수 있어요.
예제 1: HTTP 포스트를 사용한 IoT 장치 제어
다음은 필립스 휴 브리지에 연결된 조명 켜는 매크로 함수예요.
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를 사용해서 똑같이 할 수 있어요.
xcommand HttpClient Put Header: "Content-Type: application/json" URL: "http://192.0.2.10/api/'ZXlU4tUtQ23Pjbdyl-kiyCjTs0i5ANDEu1ypJq0-/lights/1/state" {"on":true} .
예 2: HTTP Post를 사용하여 모니터링 도구에 데이터 올리기
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"} .
추가 정보
HTTP 클라이언트 요청을 사용하는 방법에 대한 자세한 내용은 사용자 지정 가이드에서 찾아보세요 . 최신 버전을 선택해요.
Cisco 지원 (TAC) 은 매크로를 포함한 타사 코드 디버깅을 지원하지 않아요. 매크로와 타사 코드 관련 도움이 필요하면 https://roomos.cisco.com 확인해 주세요.