【问题标题】:Moodle and C# - Web Service ConfigurationMoodle 和 C# - Web 服务配置
【发布时间】:2013-08-21 17:34:26
【问题描述】:

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

据我所知,根据一些关于如何配置 Moodle 网络服务的稀疏信息,我已经完成了以下步骤:

  • 启用的网络服务
  • 启用 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 看起来非常健壮且易于使用,因此后续步骤应该很容易到位

任何帮助将不胜感激

非常感谢 巴里

【问题讨论】:

    标签: c# web-services login moodle


    【解决方案1】:

    现已解决

    通过 sql 调用手动检索令牌并让 Web 服务现在正常运行

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-25
        • 2010-10-15
        • 1970-01-01
        • 2011-04-07
        • 2021-09-13
        • 2018-08-02
        • 1970-01-01
        相关资源
        最近更新 更多