我目前遇到了一个非常重要的问题,我希望有人能够详细说明,关于配置基于XML-RPC的Web服务,以便在基于游戏的学习虚拟世界和专用Moodle之间进行交流站点
据我所知,通过关注如何配置Moodle Web服务的一些稀疏信息,我已完成以下步骤:
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看起来非常强大且易于使用
非常感谢任何帮助
非常感谢 百里
答案 0 :(得分:0)
现已解决
通过sql调用手动检索令牌并让web服务立即运行
答案 1 :(得分:0)
如果您查看表mdl_external_services,则会出现一个名为short name的字段,该字段可能为null,因为您似乎无法通过moodle UI填充它。这个值需要用作服务参数而不是服务名称。