程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了通过网络服务连接moodle api大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决通过网络服务连接moodle api?

开发过程中遇到通过网络服务连接moodle api的问题如何解决?下面主要结合日常开发的经验,给出你关于通过网络服务连接moodle api的解决方法建议,希望对你解决通过网络服务连接moodle api有所启发或帮助;

让我解释一下:我的目的是通过网络应用创建moodle用户

我正在 tomcat 8.0.15.0 上实现一个 Web 应用程序。也就是说,我在服务器端使用 java servlet。许多 JsP 文件和 JavaScript(其中大部分在 jquery 中)驻留在客户端。

另一方面,在另一台服务器上,我有一个测试moodle安装。通过 site-administration> plugins> web services> external services,我创建了一个启用 core_user_create_users 功能的 ws。还创建了一个令牌来访问这个 ws,并将 admin 用户设置为授权用户。

然后,在 Chrome 上输入以下网址:

https://mysyte.com/webservice/rest/server.php?wstoken=780f8b3a1164163d4dc00a757071194e&wsfunction=core_user_create_users&moodlewsrestformat=Json&users[0][username]=testuser&usr[ [email] =john@smith.com&users [0] [password] = XXXXXX

它奏效了。它返回了一个空白页,带有文本

[{"ID": 1,"username": "testuser"}]

从而在moodle中创建一个用户。

我的问题是:我怎样才能从 java 中做到这一点?或者从 JavaScript 中做到这一点?或者更好地从 jquery 中做到这一点。

如果不是,从 php 中,我想我可以从 java、JavaScript 或 jquery 调用它。

我的错误提示:在我使用的应用程序的另一部分,在 JavaScript 中,成功调用了 $.getJsON()。这就是为什么我认为在这种情况下也会为我服务。但是现在没有成功,当 mozilla 调试器到达调用时,它挂起。

欢迎任何反馈。

调用看起来像


function create_moodle_user(username,firstname,lastname,email,password) {

    var url = "https://mysyte.com/webservice/rest/server.php?"
            + "wstoken=780f8b3a1164163d4dc00a757071194e" + "&" 
            + "wsfunction=core_user_create_users"        + "&" 
            + "moodlewsrestformat=Json"                  + "&"
            + "users[0][username]=" + username           + "&"
            + "users[0][firstname]=" + firstname         + "&" 
            + "users[0][lastname]=" + lastname           + "&"
            + "users[0][email]=" + email                 + "&"
            + "users[0][password]=" + password;
    $.getJsON(url,function(data) {             // should return [{"ID":4,"username":"testuser"}]                       

    // this point is never reached

        if (data.length < 64) {                  
        }
        else {
        }
    });                         
}

解决方法

最后,它通过更改调用和传递参数的方式起作用。


function create_moodle_user(u,f,l,e,fn) {
  var domainname = 'https://my.moodle.site.com';

  var data = {
    wstoken: '780f8b3a1164163d4dc00a757071194e'
    wsfunction: 'core_user_create_users'
    moodlewsrestformat: 'json',users: [
        {
            username:u,password:'xxxxxxxx',email:e,firstname:f,lastname:l
        }
    ]
  };
  var response = $.ajax({
    type: 'GET',data: data,url: domainname + '/webservice/rest/server.php'
  });
  // pass the function parameter
  response.done(fn);
}

这奏效了!

我现在的问题是获取用户信息,因为我不知道如何从 core_user_get_users_by_field 获取响应。

这就是我所拥有的:

function get_moodle_user(u,fn) {
  var domainname = 'https://my.moodle.site.com';

  var data = {
    wstoken: '780f8b3a1164163d4dc00a757071194e'
    wsfunction: 'core_user_get_users_by_field'
    moodlewsrestformat: 'json',field: 'username',username:u
  };

  var response = $.ajax({
    type: 'GET',url: domainname + '/webservice/rest/server.php'
  });
  
  console.log(responsE);        // this does not show the result data

  // pass the function parameter
  response.done(fn);
}

有什么想法吗?

大佬总结

以上是大佬教程为你收集整理的通过网络服务连接moodle api全部内容,希望文章能够帮你解决通过网络服务连接moodle api所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。