Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    POST-запрос с помощью fetch

    POST-запрос с помощью fetch

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    POST-запрос с помощью fetch, RouterOS
     
    jamecollins
    Guest
    #1
    0
    19.04.2017 02:06:00
    Всем привет! Хочу написать скрипт, чтобы получить информацию с устройства Mikrotik и отправить её на свой сервер. Я видел, что fetch умеет делать запросы, но не знаю, как с его помощью сделать POST-запрос. На https://wiki.mikrotik.com/wiki/Manual:Tools/Fetch написано только, что fetch может делать GET-запросы. Как сделать POST-запрос с помощью fetch? Спасибо! Спасибо.
     
     
     
    lelmus
    Guest
    #2
    0
    06.05.2017 16:24:00
    Есть ли способ изменить «content-type=application/x-www-form-urlencoded» на «content-type=application/json»?
     
     
     
    chaplin
    Guest
    #3
    0
    11.05.2017 14:52:00
    Можно ли указать Content-Type: application/json при использовании PUT? Я хотел бы сделать следующее, но у меня не получилось.

    curl -X PUT "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/dns_rec­ords/372e67954025e0ba6aaa6d586b9e0b59" \
    -H "X-Auth-Email: user@example.com" \
    -H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
    -H "Content-Type: application/json" \
    --data '{"type":"A","name":"example.com","content":"127.0.0.1","ttl":120,"proxied":false}'
     
     
     
    jobear
    Guest
    #4
    0
    14.06.2017 16:06:00
    Привет, добавление content-type в fetch важно и нужно и с моей стороны. Большинство веб-сервисов требуют данные в формате json и не принимают plain/text.
     
     
     
    andriys
    Guest
    #5
    0
    14.06.2017 19:09:00
    Ты уже можешь это сделать. Пожалуйста, внимательно прочитай второе сообщение в этой ветке.
     
     
     
    jobear
    Guest
    #6
    0
    16.06.2017 13:24:00
    Не уверен, правильно ли я думаю, да, я могу вставить JSON-данные в полезную нагрузку HTTP, как показано во втором посте, но HTTP-заголовок при этом всё равно содержит «application/x-www-form-urlencoded». В моём случае сервер приложения проверяет HTTP-заголовок и из-за этого выдаёт ошибку. Для fetch должна быть дополнительная опция в виде строки, чтобы менять заголовок content-type в HTTP-запросе.
     
     
     
    thantoldo
    Guest
    #7
    0
    03.07.2017 17:19:00
    Не могли бы вы увеличить ограничение на 65535 символов (удвоить его или убрать совсем), чтобы устранить ошибку «max line length 65535 exceeded!»? Эта проблема возникает как при GET, так и при POST (я понимаю, что с GET это возможно, но с POST такого быть не должно). Поскольку RouterOS всё больше вовлекается в область больших данных, крайне важно избавиться от таких ограничений.
     
     
     
    ADvorkin
    Guest
    #8
    0
    10.07.2017 10:36:00
    Как отправить заголовок методом POST или GET? Опция «-H» в curl. Например: curl -H 'PddToken: 123456789ABCDEF0000000000000000000000000000000000000' 'https://pddimp.yandex.ru/api2/admin/dns/list?domain=domain.com'
     
     
     
    LaZyLion
    Guest
    #9
    0
    16.07.2017 17:21:00
    Всем привет! Эта новая функция публикации для меня просто находка. Она добавляет дополнительный уровень безопасности и спокойствия при передаче таких чувствительных данных, как пароли от 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";

    # отправляем на сервер ---------------------------------------------------------

    :do {
    :put "Проверка связи";

    /tool fetch mode=https url="https://domain.com/checkin.php" keep-result=yes dst-path="result.txt" \
    user="routerdevice" password="garbledpassword" http-method="post" http-data=$str;

    } on-error={ log warning "Greeter: Ошибка передачи на сервер!" }

    Сохраняете это как greeter.rsc, загружаете на роутеры и настраиваете scheduler системы на регулярный импорт этого скрипта.

    Теперь на php-сервере:

    // выводим полученные данные

    print_r($_POST);

    // или

    foreach ($_POST as $key => $value) {
    echo $key . ": " . $value . "<p>\r\n";
    }

    // сохраняем IP адрес источника и метку времени
    $checkin_ip = $_SERVER['REMOTE_ADDR'];
    $checkin_time = time();

    // отправляем ответ
    echo "good " . $_SERVER['REMOTE_ADDR'] . "\r\n";

    // теперь сохраняем в базу данных

    Сохраняем это как checkin.php и размещаем там, где сервер сможет его обработать.

    PHP $_POST ожидает данные в том же формате, что и стандартный http GET:  
    https://domin.com/checkin.php?rtrName=GrandmasHouse&rtrMac=00:11:22:33:44:55&rtrUptime=01:02:03&ssidName=BigBertha&ssidKey=puppies

    Надеюсь, кому-то это пригодится. LL
     
     
     
    Amm0
    Guest
    #10
    0
    22.08.2017 04:30:00
    Нашёл эту тему, потому что хотел сделать POST с помощью /tools fetch… Очень полезно… Но Mikrotik должен обновить документацию, поскольку http-data и прочее не упоминается как параметр: https://wiki.mikrotik.com/wiki/Manual:Tools/Fetch
     
     
     
    jelyasi
    Guest
    #11
    0
    28.09.2017 14:37:00
    Я хочу написать скрипт, чтобы логировать результат инструмента fetch, может кто-то поможет?
     
     
     
    jamecollins
    Guest
    #12
    0
    12.10.2017 08:06:00
    Привет, могу ли я загрузить текстовый файл с помощью fetch?
     
     
     
    Setneuf
    Guest
    #13
    0
    24.10.2017 11:48:00
    Есть новости по поводу этого max-lenght?
     
     
     
    thantoldo
    Guest
    #14
    0
    25.10.2017 08:38:00
    Просто небольшое замечание: тот факт, что переменная не имеет ограничения по длине, делает ограничение на передачу данных через fetch ещё более странным. Данные можно собрать локально в RouterOS, но передать их — нельзя! (Ну, можно сделать несколько запросов fetch, но это неприятный костыль как с точки зрения клиента, так и сервера). Пожалуйста, исправьте или полностью уберите это ограничение.
     
     
     
    jamecollins
    Guest
    #15
    0
    11.05.2017 07:39:00
    Как загрузить файл с помощью новой функции fetch? Спасибо.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры