Moodle rest post返回错误,其功能为core_user_get_users_by_field

问题描述 投票:0回答:2

嗨,我是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

        }
web-services rest post moodle
2个回答
1
投票

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变量中构建这些参数。


0
投票

这里的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
© www.soinside.com 2019 - 2024. All rights reserved.