Moodle和C#Web服务配置

Moodle和C#Web服务配置,c#,web-services,login,moodle,C#,Web Services,Login,Moodle,我目前遇到了一个非常重要的问题,我希望有人能够解释一下,关于配置基于XML-RPC的web服务,以便在我基于游戏的学习虚拟世界和专用Moodle站点之间进行对话 据我所知,从以下关于如何配置Moodle web服务的稀疏信息中,我完成了以下步骤: 启用的Web服务 启用了XML-RPC协议 编辑了我的管理员角色,以允许使用协议和创建用于日志记录的令牌 在 为已添加“我的管理员”的经过身份验证的用户创建服务 moodle文档向您发送了一个循环,但从我所看到的,我已经涵盖了检查列表 我现在正试图

我目前遇到了一个非常重要的问题,我希望有人能够解释一下,关于配置基于XML-RPC的web服务,以便在我基于游戏的学习虚拟世界和专用Moodle站点之间进行对话

据我所知,从以下关于如何配置Moodle web服务的稀疏信息中,我完成了以下步骤:

  • 启用的Web服务
  • 启用了XML-RPC协议
  • 编辑了我的管理员角色,以允许使用协议和创建用于日志记录的令牌 在
  • 为已添加“我的管理员”的经过身份验证的用户创建服务
moodle文档向您发送了一个循环,但从我所看到的,我已经涵盖了检查列表

我现在正试图将其插入我的虚拟世界的后端,根据用户可以访问的内容等,用一组主题、任务等填充我的动态地形引擎

我的问题来自于为用户检索令牌的简单HttpWebRequest 我使用以下方法返回一个包含令牌的字符串

    public string GetToken(string uname,string pword)
    {
        byte[] buffer = Encoding.ASCII.GetBytes("username="+uname+"&password="+pword+"&service=reflex");

        HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url + "login/token.php?username=" + uname + "&password=" + pword + "&service=myservice");
        WebReq.Method = WebRequestMethods.Http.Post;
        WebReq.ContentType = "application/x-www-form-urlencoded";

        WebReq.ContentLength = buffer.Length;
        using(Stream PostData = WebReq.GetRequestStream())
            PostData.Write(buffer, 0, buffer.Length);

        HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
        using(StreamReader reader = new StreamReader(WebResp.GetResponseStream()))
            return token = reader.ReadToEnd();
    }
当我调试它以验证生成的令牌时,它会抛出一个错误,表示web服务已关闭,但据我所知,这里不调用web服务,它使用一个内置的基本php文件来返回字符串,仅此而已。我已经检查了PostData.Write及其抛出的.Length NotSupportedException,我不确定它是否对第二个using语句有影响

我希望如果有人能帮助进行配置设置,那么接下来的步骤应该很容易完成,因为XML-RPC dll看起来非常健壮并且易于使用

任何帮助都将不胜感激

非常感谢 巴里现在解决了


通过sql调用手动检索令牌,并使web服务立即运行

如果您查看表mdl_external_services,则有一个名为short name的字段,该字段可能为空,因为您似乎无法通过moodle UI填充它。这个值需要用作服务参数,而不是服务名称