отправить запрос с данными с внешнего сервера в Moodle

Можно ли отправить запрос POST с внешнего сервера в Moodle, а затем, уже в Moodle, выполнить некоторые действия с данными и сохранить их в БД (таблица БД, созданная локальным плагином).
Есть ли возможность сделать это?
Спасибо всем за помощь.

0

Решение

Вы можете использовать веб-сервисы

https://docs.moodle.org/dev/Web_services

Вот несколько кратких инструкций

  • Включить веб-сервисы /admin/search.php?query=enablewebservices
  • Включить протокол отдыха /admin/settings.php?section=webserviceprotocols
  • Добавить сервис /admin/settings.php?section=externalservices
  • — добавь короткое имя = твои услуги короткое имя
  • — enable = true
  • — Сохранить изменения
  • Нажмите на «Функции для услуги»
  • — добавить все необходимые функции
  • Создать роль — /admin/roles/manage.php
  • — Аутентифицировать пользователя / систему
  • — Добавить возможность — webservice/rest:use
  • Создать пользователя и добавить в роль
  • Создать токен для пользователя /admin/settings.php?section=webservicetokens

Затем в php Вы можете сделать что-то вроде этого:

$tokenurl = 'http://[url]/login/token.php?username=xxx&password=xxx&service=yourserviceshortname';

$tokenresponse = file_get_contents($tokenurl->out(false));

$tokenobject = json_decode($tokenresponse);

if (!empty($tokenobject->error)) {
echo $tokenobject->error;
die();
}

$functionurl = 'http://[url]/webservice/rest/server.php';
$functionurl .= '?wstoken=' . $tokenobject->token;
$functionurl .= '&wsfunction=functionname';
$functionurl .= '&moodlewsrestformat=json';
$functionurl .= '&param1=xxx';
$functionurl .= '&param2=yyy';

$functionresponse = file_get_contents($functionurl);

$object = json_decode($functionresponse);

var_dump($object);

Полный список доступных функций см. /admin/webservice/documentation.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]