Подскажите пожалуйста как в виртуальном устройстве созданном в Home Center Light отправить POST запрос в формате JSON, без использования LUA (HCL его не поддерживает)? Необходимо отправить запрос в JSON формате (application/json) вида "key" = "Digit1" Нужно отправить такой запрос (непосредственно в таком виде, он работает при отправки с ПК):
Как правильно его написать для HCL? (ему нужны коды перевода коретки, но вопрос в том где именно, и нужно ли urlencod'ить raw data который я ему шлю (JSON). Перепробывал уже по всякому вариантов 20, не работает никак. |
Уже нашел решение и только потом прочитал ваше. Действительно вся проблема оказалась в Content-Length, без него не работает (что очень странно). Вот верный работающий запрос:
|
Если нет LUA не уверен, что это возможно. Есть некоторый костыльный варинат. Например у нас есть Raspberry Pi (на котором есть вебсервер + PHP). Создаем виртуальное устройство без LUA. В настройках в IP указываем IP адрес Raspberry, порт - 80. Добавляем одну кнопку, в текстовом поле которой пишем: {"key":"Digit1"}0x0D0x0A (последние магические символы очень важны) На веб сервере в корне создаем index.php (не забыв удалить index.html, если имеется). И если нажмем кнопку на устройстве, то в PHP скрипт, в переменную $_SERVER["REQUEST_METHOD"] попадет {"key":"Digit1"} (как строка), а дальше уже json_decode и делать, что хочется. Думаю, что это очень костыльный вариант. 1
Возможно, LUA здесь не причем, мне нужно отправить этот запрос на ТВ (он работает при отправке с ПК): POST /1/input/key HTTP/1.1 Host: 192.168.0.63:1925 Cache-Control: no-cache { "key": "Digit1" } Как правильно его написать для HCL? (ему нужны коды перевода коретки, но вопрос в том где именно, и нужно ли urlencod'ить raw data который я ему шлю (JSON). 1
Ого, не знал, что там вообще можно так запросы писать. Потестировал сейчас. Получилось вот так: http://dl.dropbox.com/u/5742601/%D0%92%D1%8B%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_114.png Обратите внимание на Content-Lenth: 16 - он должен быть верным. Если не указать, то вообще ничего не передается, если указать меньше, то обрезается, если больше, то вообще запрос не работает. |