Moodle REST Web 服务:将数组作为 POST 参数发送时出现问题
Moodle REST webservice: Problems sending an array as POST parameter
我正在使用Moodle REST网络服务与Qt结合使用。 登录有效,其他具有单个参数的功能也可以工作。
现在我想使用函数"core_user_update_users",它将数组作为参数。
官方文件说:
一般结构:
list of (
object {
id int //ID of the user
username string Optional //Username policy is defined in Moodle security config.
... //more optional strings
customfields Optional //User custom fields (also known as user profil fields)
list of (
object {
type string //The name of the custom field
value string //The value of the custom field
}
)preferences Optional //User preferences
list of (
object {
type string //The name of the preference
value string //The value of the preference
}
)}
)
和:
休息(开机自检参数)
users[0][id]= int
users[0][username]= string //optional
//many more parameters, but all optional like above
所以我认为这将是我的HTTP请求:
auto NetworkPostRequest = QNetworkRequest(QUrl("http://XXX.XXX.XXX.XXX/webservice/rest/server.php?wstoken=XXXXXXXXX&moodlewsrestformat=json&wsfunction=core_user_update_users" ));
NetworkPostRequest.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
QByteArray Data;
Data.append("users[0][id]=12");
Data.append("&users[0][firstname]=QtTestname");
this->NetworkAccessManager->put(NetworkPostRequest, Data);
但是我从moodle收到以下调试消息:
{
"debuginfo": "Missing required key in single structure: users",
"errorcode": "invalidparameter",
"exception": "invalid_parameter_exception",
"message": "Invalid parameter value detected"
}
显然数据有问题,但我无法弄清楚。希望这里有人可以提供帮助。
解决方案是在数据的第一个附加项中添加"&"。
QByteArray Data;
Data.append("&users[0][id]=12");
Data.append("&users[0][firstname]=QtTestname");
this->NetworkAccessManager->put(NetworkPostRequest, Data);
没有数组作为参数的 Moodle 函数并不关心这一点,所以直到现在它才引起我的注意。
相关文章:
- C++复杂情况的比较器通过参数问题
- C++17 中的歧义错误(模板模板参数和默认参数问题)
- C 缺少模板参数问题
- C++ pcap_loop() 参数问题
- 带有指针作为参数问题的 C++ 函数
- C++ 奇怪的字符*参数问题(不兼容的类型)
- JNA 参数问题:内存访问无效
- Qt样式表和"一个参数"问题
- 默认参数问题 (c++)
- 具有可变模板的递归继承和继承参数问题
- 命令行参数问题
- OpenCV 决策树参数问题
- winapi GetProcessMemoryInfo 无效参数问题
- 参数问题?至少我认为是这样
- 构造函数参数问题C++
- c++教程参考参数问题
- c++多线程参数问题
- Clang Format多行函数声明参数问题
- 提升Python - 具有默认参数问题的重载函数
- VBA Excel DLL参数问题-第6个参数