Приемник HTTP используется для приема данных при помощи методов HTTP GET или POST. Данные могут быть отправлены любым приложением, которое может работать как HTTP-клиент, наиболее очевидный пример – это веб-браузер, хотя существует много других приложений.
Можно настроить группу HTTP-приемников, каждый из которых будет прослушивать разные данные (например, идентификаторы устройств или IP-адреса).
Данные принимаются по адресу /httpds. Поэтому, если Ваша система доступна, например, по адресу 'http://localhost/', данные должны быть направлены по адресу 'http://localhost/httpds'. Попробуйте прямо сейчас. Эта ссылка отправляет параметр с именем 'testKey' со значением 'testValue'. Скорее всего, ни один из приемников не ожидает параметр с таким именем, поэтому Вам придет сообщение 'Нераспознанный ключ: testKey'. Это нормально; такое сообщение подскажет пользователю, что данные отправлены, но не используются.
Каждый источник данных должен иметь произвольно заданное Имя.
Белый список удаленных IP-адресов – это функция безопасности, которая выдает указание источнику данных игнорировать IP-адреса, не соответствующие заданным маскам IP-адресов. Более подробная информация о форматировании масок приводится ниже.
Белый список идентификаторов устройств обеспечивает дополнительный уровень безопасности, а также маршрутизацию данных. Он содержит описание устройств, которых прослушивает источник данных. Написание идентификаторов устройств не зависит от регистра. Кроме того, в конце идентификатора устройства можно добавлять знак '*'. Например, маска 'site10*' будет соответствовать устройствам с идентификатором 'site10', 'SITE10temp', 'site10HUM', и т.п. Идентификатор устройства указывается в HTTP-запросе с именем параметра __device (с двумя нижними прочерками). Информация по другим параметрам запросов приводится ниже в разделе Параметры запроса.
'Белые списки', или разрешающие списки, применяются чаще благодаря тому, что обеспечивают более надежную защиту, нежели 'черные списки', в которых вносятся запрещенные элементы. Чтобы добавить значение в белый список, введите его в соответствующем текстовом окне и нажмите сопровождающую его пиктограмму . Чтобы удалить значение, нажмите пиктограмму
рядом со значением.
'Маска' – это IP-адрес, который может содержать универсальные символы ('*') или числовые диапазоны. IP-адреса задаются при помощи формата IPv4, состоящего из четырех разделенных точкой значений, каждое из которых является числом от 0 до 255 (например, '192.168.0.10'). Каждая из четырех частей маски может быть либо конкретным числом, соответствие с которым должно быть полным, либо числовым диапазоном, заданным при помощи двух чисел, разделенных знаком '-'. Например, правильная маска записывается так: '192.168.10-15.*'. Эта запись означает, что первое число должно быть 192, второе – 168, третьим может быть любое число от 10 до 15 включительно, и четвертое может быть любым числом (от 0 до255). Маска по умолчанию '*.*.*.*' означает, что все IP-адреса доступны.
Запросы доставляются с помощью обычных параметризованных форматов HTML-запроса. При использовании метода GET, формат запроса выглядит так: 'http://<domain name and port>/<optional path>/httpds?param1=value1¶m2=value2'. Запросы, отправляемые при помощи метода POST, обычно требуют применения специализированного клиента. Если вы хотите использовать метод POST, обратитесь к документации клиента.
Значения объектов могут быть заданы двумя способами. Первый способ – при помощи формата 'pointName=pointValue' ('Имя точки = Значение точки). Второй – при помощи ключа и значения в виде двух раздельных параметров с префиксом-ключом '__Point' and '__Value'. Например, выражение '__pointFoo=pointName&__valueFoo=pointValue' (сопоставленные по значению 'Foo' после префикса) равнозначно выражению 'pointName=pointValue'.
Порядок, в котором располагаются параметры запроса, не имеет значения. Ниже приводятся специальные ключи параметров запросов. Обратите внимание, что все они начинаются с двух нижних прочерков. Все эти ключи являются необязательными.
Метки времени могут быть представлены различными способами. Если обнаружена метка времени (т.е. она не пустая), Mango будет пытаться обработать ее сначала в формате "yyyyMMddHHmmss" ("ггггММддЧЧммсс"), затем в формате "yyyy-MM-dd'T'HH:mm:ss'Z'" ("гггг-MM-дд'T'ЧЧ:мм:сс'Z'"), и наконец в количестве миллисекунд, прошедших с 00:00 1 января 1970 г. (Смотри раздел «Форматы даты/времени»).
Вы можете просмотреть данные, которые получает Ваша система, если нажмете на кнопку 'Принять данные HTTP'. Обратите внимание, что текущие параметры настройки белого списка будут использоваться в качестве фильтра запросов. Чтобы посмотреть все входящие данные, установите маску IP-адреса '*.*.*.*' и маску идентификатора устройства '*'.
После получения данных, все сведения отражаются в окне приемника. В первой строке содержится IP-адрес (который впоследствии можно будет использовать в белом списке IP-адресов). Вторая строка содержит идентификатор устройства или '(none)' («ничего»), если параметр отсутствует.
Третья строка показывает время запроса. По умолчанию устанавливается системное время, но его можно заменить параметром __time (время).
Оставшиеся строки данных содержат ключи отдельных параметров и значения, которые были получены, в формате 'key=value' ('ключ=значение').
Приемник будет прослушивать запросы до тех пор, пока не будет нажата кнопка «Отмена» или до перезагрузки системы.
Для краткости опускаем доменные имена.
httpds?__device=boilerA&temp=215.5&hum=77.4&state=running
имеет тот же результат, что и
httpds?__device=boilerA&__point1=temp&__value1=215.5&__pointFoo=hum&__valueFoo=77.4&__pointBar=state&__valueBar=running
httpds?presents=true&__time=20071225073000
На успешные запросы, направленные приемнику, выдается ответ '200 OK'. В случае, если в результате запроса возникает ошибка, в содержании HTTP-ответа будет выдаваться следующее сообщение об ошибке или предупреждение:
По умолчанию только приведенные выше сообщения выдаются в ответ на HTTP-запрос. Если Вам нужны дополнительные сообщения в ответ на запросы, вы можете указать постоянную часть в качестве вступления (записывается перед сообщением об ошибке или предупреждением) или заключения (записывается после сообщения об ошибке или предупреждения). Чтобы установить пользовательский текст, используйте следующие выражения для вставки (или аналогичные выражения для обновления, если ключ уже существует):
insert into systemSettings (settingName, settingValue) values ('httpdsPrologue', 'my prologue content') insert into systemSettings (settingName, settingValue) values ('httpdsEpilogue', 'my epilogue content')