Обработка json POST
Модератор: immortal
-
- Сообщения: 19
- Зарегистрирован: Пн окт 24, 2016 7:39 pm
- Благодарил (а): 3 раза
- Поблагодарили: 1 раз
Обработка json POST
Сорри если где то обсуждалось но не нашел... Есть сторонний веб сервис, который время от времени передает информацию MD. Передает определенное количество данных, но данные это текст в киррилице. Хочу передавать данные json. Но вот как принять данные в MD не понимаю. В PHP не силен. Как я понимаю надо вызвать сценарий и в нем принять json. Но как обработать POST запрос не знаю. Может подскажите в какую сторону копать ?
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Благодарил (а): 108 раз
- Поблагодарили: 147 раз
- Контактная информация:
Re: Обработка json POST
Самый банальный пример:
Создать скрипт.
Добавить в него код:
И тогда при запросе:
Будет отображена информация которая идёт после "command=", то есть будет отображен текст: "test_data".
В примере выше, имя скрипта "Test".
Замените "test_data" на Ваш JSON в POST запросе, и смотрите как парсится JSON в PHP.
Создать скрипт.
Добавить в него код:
Код: Выделить всё
$command=$params['command'];
echo $command;
Код: Выделить всё
http://localhost/objects/?script=Test&command=test_data
В примере выше, имя скрипта "Test".
Замените "test_data" на Ваш JSON в POST запросе, и смотрите как парсится JSON в PHP.
- savenko_egor
- Сообщения: 705
- Зарегистрирован: Вс авг 03, 2014 8:17 pm
- Откуда: Украина, Запорожье
- Благодарил (а): 108 раз
- Поблагодарили: 147 раз
- Контактная информация:
Re: Обработка json POST
Кодируйте предварительно кириллицу перед отправкой. Например при помощи BASE64.
-
- Сообщения: 19
- Зарегистрирован: Пн окт 24, 2016 7:39 pm
- Благодарил (а): 3 раза
- Поблагодарили: 1 раз
Re: Обработка json POST
И кодировать не могу. С той стороны Sharepoint .. в котором я не могу править код рабочих процессов (((
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1754 раза
- Контактная информация:
Re: Обработка json POST
Попробуйте такой код:
В коде сценариев и методов не проверял. А просто в php-скрипте работает у меня на приеме POST-запросов от Telegram. Он тоже в JSON шлет.
Код: Выделить всё
<?php
$content = file_get_contents("php://input");
//Для отладки можно записать в лог принятые данные
$today_file = 'log_' . date('Y-m-d') . '.txt';
$data = date("H:i:s")." " . $content . "\n";
file_put_contents($today_file, $data, FILE_APPEND | LOCK_EX);
//Дальше можно обрабатывать принятые данные
$array = json_decode($content, TRUE);
?>
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 1115
- Зарегистрирован: Вс июн 14, 2015 11:08 am
- Благодарил (а): 85 раз
- Поблагодарили: 342 раза
Re: Обработка json POST
/objects не обрабатывает POST-запросы. Вам нужно написать свой скрипт.
Вот для примера с вызовом сценария по имени postScript и передачей в него тела запроса
Естественно, нужно добавить проверки и т.д.
В сценарии строка с текстом будет в $params
Вот для примера с вызовом сценария по имени postScript и передачей в него тела запроса
Код: Выделить всё
<?php
chdir(dirname(__FILE__));
include_once("./config.php");
include_once("./lib/loader.php");
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME); // connecting to database
include_once("./load_settings.php");
runScript("postScript", file_get_contents('php://input'));
$db->Disconnect(); // closing database connection
В сценарии строка с текстом будет в $params
Последний раз редактировалось olehs Ср янв 11, 2017 6:29 pm, всего редактировалось 2 раза.
- Рейтинг: 1.16%
-
- Сообщения: 1115
- Зарегистрирован: Вс июн 14, 2015 11:08 am
- Благодарил (а): 85 раз
- Поблагодарили: 342 раза
Re: Обработка json POST
даmaleha писал(а):Я правильно понял. postScript это уже сценарий в MD ?
- Рейтинг: 1.16%
-
- Сообщения: 19
- Зарегистрирован: Пн окт 24, 2016 7:39 pm
- Благодарил (а): 3 раза
- Поблагодарили: 1 раз
Re: Обработка json POST
Спасибо. Отлично работает. Если не сложно могли бы обьяснить как этот код работает. Почему строка автоматом попадает в $params ?