嗨,我是moodle的新手,我在调用webservice时遇到错误。
目前我正在尝试使用以下函数core_user_get_users_by_field从moodle中检索用户,并且我正在使用rest服务来执行此操作。我已经设法创建一个用户,因此我通过身份验证使用该服务。
我收到的错误是
单个结构中缺少必需的键:字段
下面是用于创建用户的代码。我从错误中得到的问题是我需要为帖子发送的参数格式不正确。有谁知道如何使用此方法或任何其他方法正确搜索。
String token = "token";
String postData = "username=username";
string createRequest = string.Format("http://domain/webservice/rest/server.php?wstoken={0}&wsfunction={1}&moodlewsrestformat=json", token, "core_user_get_users_by_field");
// Call Moodle REST Service
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(createRequest);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
// Encode the parameters as form data:
byte[] formData =
UTF8Encoding.UTF8.GetBytes(postData);
req.ContentLength = formData.Length;
// Write out the form Data to the request:
using (Stream post = req.GetRequestStream())
{
post.Write(formData, 0, formData.Length);
}
// Get the Response
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream resStream = resp.GetResponseStream();
StreamReader reader = new StreamReader(resStream);
string contents = reader.ReadToEnd();
// Deserialize
JavaScriptSerializer serializer = new JavaScriptSerializer();
if (contents.Contains("exception"))
{
// Error
MoodleException moodleError = serializer.Deserialize<MoodleException>(contents);
}
else
{
// Good
}
webservice core_user_get_users_by_field
需要一个以参数形式给出的关联数组,其中包含以下键:值
'field':'id'
'values':整数数组(必须是一个数组,可能只有一个值)
在PHP中,它将是,例如:
$parameters = array('field' => 'id', 'values' => array(13));
这意味着:'id'的值为13的用户。当然,您也可以使用其他参数:('field'=>'lastname','values'=> array('Smith'))
您可以选择的参数是Moodle'用户'表的字段。
尝试在postData
变量中构建这些参数。
这里的URL与我把这个url放在邮递员中并将http方法设置为post方法
hostname/webservice/rest/server.php?wstoken=any_token&wsfunction=core_user_get_users_by_field&field=email&values[0][email protected]
&moodlewsrestformat=json