调用Moodle core_user_update_users接口时JSON请求报错排查
排查Moodle core_user_update_users JSON请求报错的问题
你遇到的invalid_parameter_exception错误,大概率是JSON请求的Content-Type头部设置错误,或是Moodle Web Service对JSON参数的解析规则未匹配,以下是具体排查点和解决办法:
1. 确认Content-Type头部设置
在Postman中使用JSON格式请求时,必须手动设置请求头:
Content-Type: application/json
如果未设置该头部,Moodle会将你的JSON数据当作普通表单数据解析,导致参数结构不匹配,触发参数无效错误。而form-urlencoded格式会自动带上正确的application/x-www-form-urlencoded头部,因此能正常工作。
2. 检查JSON参数细节匹配
尽管你的JSON结构看似符合接口定义,仍需确认以下细节:
- 自定义字段的
type值需完全匹配Moodle中对应自定义字段的短名称(Short name):进入Moodle后台的「用户自定义字段」设置,查看目标字段的短名称,确保和JSON里的company_name完全一致(大小写敏感)。 - 确保JSON语法无错误:比如逗号、括号闭合正常,字符串仅使用双引号。你的示例JSON语法正确,但实际请求若存在拼写疏漏,也会触发报错。
3. 验证Moodle Web Service的JSON支持
- 进入Moodle后台:站点管理 > 插件 > Web服务 > 管理协议,确认REST协议已启用,且REST协议配置允许接收JSON格式请求(默认允许,部分版本可能需手动开启)。
- 检查Web服务令牌(token)权限:确保令牌关联的用户拥有
moodle/user:update权限,且权限范围覆盖你要更新的用户。
4. 简化请求测试
先发送极简JSON请求验证基础功能,比如仅更新单个用户的基本信息:
{ "users": [ { "id": 554, "institution": "test institute" } ] }
若该请求成功,再逐步添加自定义字段内容,排查是否为自定义字段部分的问题。
内容的提问来源于stack exchange,提问作者the.herbert
相关产品推荐
相关产品推荐

