Moodle和C# - Web服务配置

时间:2013-07-27 12:19:19

标签: c# web-services login moodle

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

据我所知,通过关注如何配置Moodle 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,我不确定它是否对第二个使用语句产生了影响

我希望有人可以提供有关配置设置的帮助,以便下一步应该很容易实现,因为XML-RPC dll看起来非常强大且易于使用

非常感谢任何帮助

非常感谢 百里

2 个答案:

答案 0 :(得分:0)

现已解决

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

答案 1 :(得分:0)

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