Всем привет! Хочу написать скрипт, чтобы получить информацию с устройства Mikrotik и отправить её на свой сервер. Я видел, что fetch умеет делать запросы, но не знаю, как с его помощью сделать POST-запрос. На https://wiki.mikrotik.com/wiki/Manual:Tools/Fetch написано только, что fetch может делать GET-запросы. Как сделать POST-запрос с помощью fetch? Спасибо! Спасибо.
Привет, добавление content-type в fetch важно и нужно и с моей стороны. Большинство веб-сервисов требуют данные в формате json и не принимают plain/text.
Не уверен, правильно ли я думаю, да, я могу вставить JSON-данные в полезную нагрузку HTTP, как показано во втором посте, но HTTP-заголовок при этом всё равно содержит «application/x-www-form-urlencoded». В моём случае сервер приложения проверяет HTTP-заголовок и из-за этого выдаёт ошибку. Для fetch должна быть дополнительная опция в виде строки, чтобы менять заголовок content-type в HTTP-запросе.
Не могли бы вы увеличить ограничение на 65535 символов (удвоить его или убрать совсем), чтобы устранить ошибку «max line length 65535 exceeded!»? Эта проблема возникает как при GET, так и при POST (я понимаю, что с GET это возможно, но с POST такого быть не должно). Поскольку RouterOS всё больше вовлекается в область больших данных, крайне важно избавиться от таких ограничений.
Как отправить заголовок методом POST или GET? Опция «-H» в curl. Например: curl -H 'PddToken: 123456789ABCDEF0000000000000000000000000000000000000' 'https://pddimp.yandex.ru/api2/admin/dns/list?domain=domain.com'
Всем привет! Эта новая функция публикации для меня просто находка. Она добавляет дополнительный уровень безопасности и спокойствия при передаче таких чувствительных данных, как пароли от Wi-Fi. У меня есть скрипт, который запускается на всех моих роутерах для связи с моим php-сервером. Сначала это был просто клиент dyndns, но теперь он превратился во что-то гораздо более функциональное. Вот мои пару копеек:
Сначала на роутере:
# собираем основную информацию о роутере ----------------------------------------------- :local uptime [/system resource get uptime]; :local macadd [/interface wireless get [ find default-name=wlan1 ] mac-address] :local ver [/system resource get version] :local name [/system identity get name]
# собираем информацию по Wi-Fi --------------------------------------------------- :local wifi [/interface wireless get [ find default-name=wlan1 ] ssid] :local pw [/interface wireless security-profiles get [ find name=default ] wpa2-pre-shared-key]
# складываем всё вместе ---------------------------------------------------- :set $str "rtrName=$name&rtrMac=$macadd&rtrUptime=$uptime&rtrVersion=$ver&ssidName=$wifi&ssidKey=$pw";
# отправляем на сервер ---------------------------------------------------------
Нашёл эту тему, потому что хотел сделать POST с помощью /tools fetch… Очень полезно… Но Mikrotik должен обновить документацию, поскольку http-data и прочее не упоминается как параметр: https://wiki.mikrotik.com/wiki/Manual:Tools/Fetch
Просто небольшое замечание: тот факт, что переменная не имеет ограничения по длине, делает ограничение на передачу данных через fetch ещё более странным. Данные можно собрать локально в RouterOS, но передать их — нельзя! (Ну, можно сделать несколько запросов fetch, но это неприятный костыль как с точки зрения клиента, так и сервера). Пожалуйста, исправьте или полностью уберите это ограничение.