从外部服务器向Moodle发送数据请求

时间:2016-06-22 08:42:45

标签: php moodle moodle-api

是否可以从外部服务器向Moodle发送POST请求,然后已经在Moodle中对数据执行一些操作并保存到DB(本地插件创建的数据库表)。 有可能这样做吗? 谢谢大家的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用网络服务

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

以下是一些简要说明

  • 启用网络服务/admin/search.php?query=enablewebservices
  • 启用休息协议/admin/settings.php?section=webserviceprotocols
  • 添加服务/admin/settings.php?section=externalservices
  • - 添加短名称= yourserviceshortname
  • - 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