gpt4 book ai didi

c++ - Moodle REST 网络服务 : Problems sending an array as POST parameter

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:19:48 24 4
gpt4 key购买 nike

我将 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
}
)}
)

和:

REST(POST 参数)

 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++ - Moodle REST 网络服务 : Problems sending an array as POST parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28096194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com