调用WebUntis API出现Request ID不匹配错误该如何解决?
WebUntis API Request ID不匹配报错解决方案
你遇到的webuntis.errors.RemoteError: Request ID was not the same one as returned错误是旧版webuntis Python库的JSON-RPC请求ID校验逻辑兼容问题导致的:部分WebUntis服务端会将返回的请求ID转为字符串类型,和库默认生成的数字类型时间戳ID在校验时类型不匹配,触发报错。
可按照以下步骤排查修复:
- 先校验基础配置正确性
- 确认
username、password为你真实的WebUntis登录账号密码 - 确认
school参数填的是WebUntis分配的学校标识,不是学校全称,可登录WebUntis网页端后复制URL中的school参数值使用 - 确认
server参数没有加https://前缀或路径后缀,仅填写域名即可
- 确认
- 修复ID校验逻辑问题,两种方案可选:
方案1:升级webuntis库到最新版本,新版本已经修复了ID类型不兼容的校验问题,执行命令:pip install --upgrade webuntis
方案2:手动修改本地库的校验规则,打开路径/home/bwlok/.local/lib/python3.8/site-packages/webuntis/utils/remote.py,找到_parse_result函数中判断ID相等的代码,将原有严格相等判断改为字符串类型匹配:
原代码:
修改后:if result.get('id') != request_id:if str(result.get('id')) != str(request_id): - 如果修改后仍然报错,联系学校IT部门确认你的账号有WebUntis API访问权限,部分学校会关闭第三方API访问入口。
内容的提问来源于stack exchange,提问作者Bwlok
相关产品推荐
相关产品推荐

