Страница 1 из 2

Обработка json POST

Добавлено: Ср янв 11, 2017 1:45 pm
maleha
Сорри если где то обсуждалось но не нашел... Есть сторонний веб сервис, который время от времени передает информацию MD. Передает определенное количество данных, но данные это текст в киррилице. Хочу передавать данные json. Но вот как принять данные в MD не понимаю. В PHP не силен. Как я понимаю надо вызвать сценарий и в нем принять json. Но как обработать POST запрос не знаю. Может подскажите в какую сторону копать ?

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

Добавлено: Ср янв 11, 2017 4:19 pm
savenko_egor
Самый банальный пример:
Создать скрипт.
Добавить в него код:

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

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

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

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

Замените "test_data" на Ваш JSON в POST запросе, и смотрите как парсится JSON в PHP.

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

Добавлено: Ср янв 11, 2017 4:26 pm
savenko_egor
Кодируйте предварительно кириллицу перед отправкой. Например при помощи BASE64.

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

Добавлено: Ср янв 11, 2017 4:32 pm
maleha
Я так пробывал )) только скрипт отрабатывает только при методе GET.

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

Добавлено: Ср янв 11, 2017 4:40 pm
maleha
И кодировать не могу. С той стороны Sharepoint .. в котором я не могу править код рабочих процессов (((

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

Добавлено: Ср янв 11, 2017 5:01 pm
skysilver
Попробуйте такой код:

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

<?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 шлет.

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

Добавлено: Ср янв 11, 2017 5:05 pm
olehs
/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

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

Добавлено: Ср янв 11, 2017 5:31 pm
maleha
Я правильно понял. postScript это уже сценарий в MD ?

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

Добавлено: Ср янв 11, 2017 5:33 pm
olehs
maleha писал(а):Я правильно понял. postScript это уже сценарий в MD ?
да

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

Добавлено: Ср янв 11, 2017 6:03 pm
maleha
Спасибо. Отлично работает. Если не сложно могли бы обьяснить как этот код работает. Почему строка автоматом попадает в $params ?