core_user_create_user 和 moodle 网络服务设置不工作

core_user_create_user and moodle webservice setup not working

我已经完成了在我的 moodle 3.11 实例上设置网络服务所需的一切,包括 roles/capabilities/user。但是发送测试请求总是给出 { “异常”:“dml_missing_record_exception”, “错误代码”:“无效记录”, "message": "无法在数据库 table external_functions 中找到数据记录。" }

访问它的 URL 格式为 https:///moodle/webservice/rest/server.php?wsfunction=core_user_create_user&service=mymoodleusermanage&moodlewsrestformat=json &users[0][username]=ABC&users[0][firstname]=VPTest&users[0][lastname]=None&users[0][email]=mail@xxx.com&users[0][password ]=xxxxx&users[0][auth]=manual&wstoken=xxxxxxxxxxxxxx

服务参数已正确设置为服务的简称。是否必须在站点管理->服务器->Web 服务->外部服务->自定义服务之外的任何地方额外定义服务

感谢您提供的任何帮助

答案很简单 - 您正在尝试调用一个不存在的网络服务函数(因此出现有关无法在 external_functions 数据库中找到该函数的数据库记录的错误消息 table).

如果您查看 Moodle 代码:https://github.com/moodle/moodle/blob/master/lib/db/services.php#L1717 您会看到该函数被调用 core_user_create_users - 末尾有一个“s”。

如果您将额外的“s”添加到您正在使用的 URL 参数中,那么它应该可以工作。

https:///moodle/webservice/rest/server.php?wsfunction=core_user_create_user&service=mymoodleusermanage&moodlewsrestformat=json&users[0][username]=ABC&users[0][ firstname]=VPTest&users[0][lastname]=None&users[0][email]=mail@xxx.com&users[0][password]=xxxxx&users[0][auth]=manual&wstoken=xxxxxxxxxxxxxx

你必须像这样更改用户名全字符小写字母[username]=ABC [username]=abc 并添加 s wsfunction=core_user_create_users