Обработка json POST

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

maleha
Сообщения: 19
Зарегистрирован: Пн окт 24, 2016 7:39 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Обработка json POST

Сообщение maleha » Ср янв 11, 2017 1:45 pm

Сорри если где то обсуждалось но не нашел... Есть сторонний веб сервис, который время от времени передает информацию MD. Передает определенное количество данных, но данные это текст в киррилице. Хочу передавать данные json. Но вот как принять данные в MD не понимаю. В PHP не силен. Как я понимаю надо вызвать сценарий и в нем принять json. Но как обработать POST запрос не знаю. Может подскажите в какую сторону копать ?
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: Обработка json POST

Сообщение savenko_egor » Ср янв 11, 2017 4:19 pm

Самый банальный пример:
Создать скрипт.
Добавить в него код:

Код: Выделить всё

$command=$params['command'];
echo $command;
И тогда при запросе:

Код: Выделить всё

http://localhost/objects/?script=Test&command=test_data   
Будет отображена информация которая идёт после "command=", то есть будет отображен текст: "test_data".
В примере выше, имя скрипта "Test".

Замените "test_data" на Ваш JSON в POST запросе, и смотрите как парсится JSON в PHP.
Аватара пользователя
savenko_egor
Сообщения: 705
Зарегистрирован: Вс авг 03, 2014 8:17 pm
Откуда: Украина, Запорожье
Благодарил (а): 108 раз
Поблагодарили: 147 раз
Контактная информация:

Re: Обработка json POST

Сообщение savenko_egor » Ср янв 11, 2017 4:26 pm

Кодируйте предварительно кириллицу перед отправкой. Например при помощи BASE64.
maleha
Сообщения: 19
Зарегистрирован: Пн окт 24, 2016 7:39 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Обработка json POST

Сообщение maleha » Ср янв 11, 2017 4:32 pm

Я так пробывал )) только скрипт отрабатывает только при методе GET.
maleha
Сообщения: 19
Зарегистрирован: Пн окт 24, 2016 7:39 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Обработка json POST

Сообщение maleha » Ср янв 11, 2017 4:40 pm

И кодировать не могу. С той стороны Sharepoint .. в котором я не могу править код рабочих процессов (((
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Обработка json POST

Сообщение skysilver » Ср янв 11, 2017 5:01 pm

Попробуйте такой код:

Код: Выделить всё

<?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);

?>
В коде сценариев и методов не проверял. А просто в php-скрипте работает у меня на приеме POST-запросов от Telegram. Он тоже в JSON шлет.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Обработка json POST

Сообщение olehs » Ср янв 11, 2017 5:05 pm

/objects не обрабатывает POST-запросы. Вам нужно написать свой скрипт.
Вот для примера с вызовом сценария по имени 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 раза.
За это сообщение автора olehs поблагодарил:
maleha (Ср янв 11, 2017 6:01 pm)
Рейтинг: 1.16%
maleha
Сообщения: 19
Зарегистрирован: Пн окт 24, 2016 7:39 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Обработка json POST

Сообщение maleha » Ср янв 11, 2017 5:31 pm

Я правильно понял. postScript это уже сценарий в MD ?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Обработка json POST

Сообщение olehs » Ср янв 11, 2017 5:33 pm

maleha писал(а):Я правильно понял. postScript это уже сценарий в MD ?
да
За это сообщение автора olehs поблагодарил:
maleha (Ср янв 11, 2017 6:01 pm)
Рейтинг: 1.16%
maleha
Сообщения: 19
Зарегистрирован: Пн окт 24, 2016 7:39 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Обработка json POST

Сообщение maleha » Ср янв 11, 2017 6:03 pm

Спасибо. Отлично работает. Если не сложно могли бы обьяснить как этот код работает. Почему строка автоматом попадает в $params ?
Ответить