从外部服务器向 Moodle 发送带有数据的请求
send request with data from external server to Moodle
是否可以从外部服务器向 Moodle 发送 POST 请求,然后在 Moodle 中对数据执行一些操作并保存到数据库(数据库 table 由本地插件创建)。
有没有可能做到这一点?
感谢大家的帮助。
您可以使用网络服务
https://docs.moodle.org/dev/Web_services
这里有一些简短的说明
- 启用网络服务
/admin/search.php?query=enablewebservices
- 启用休息协议
/admin/settings.php?section=webserviceprotocols
- 添加服务
/admin/settings.php?section=externalservices
- -- 添加简称 = yourserviceshortname
- --启用=真
- -- 保存更改
- 点击'functions for the service'
- -- 添加任何需要的函数
- 创建角色 -
/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 .= '¶m1=xxx';
$functionurl .= '¶m2=yyy';
$functionresponse = file_get_contents($functionurl);
$object = json_decode($functionresponse);
var_dump($object);
有关可用函数的完整列表,请参阅 /admin/webservice/documentation.php
是否可以从外部服务器向 Moodle 发送 POST 请求,然后在 Moodle 中对数据执行一些操作并保存到数据库(数据库 table 由本地插件创建)。 有没有可能做到这一点? 感谢大家的帮助。
您可以使用网络服务
https://docs.moodle.org/dev/Web_services
这里有一些简短的说明
- 启用网络服务
/admin/search.php?query=enablewebservices
- 启用休息协议
/admin/settings.php?section=webserviceprotocols
- 添加服务
/admin/settings.php?section=externalservices
- -- 添加简称 = yourserviceshortname
- --启用=真
- -- 保存更改
- 点击'functions for the service'
- -- 添加任何需要的函数
- 创建角色 -
/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 .= '¶m1=xxx';
$functionurl .= '¶m2=yyy';
$functionresponse = file_get_contents($functionurl);
$object = json_decode($functionresponse);
var_dump($object);
有关可用函数的完整列表,请参阅 /admin/webservice/documentation.php