通过网络服务连接moodle api

时间:2021-07-14 19:16:52

标签: javascript java php jquery 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 {
        }
    });                         
}

1 个答案:

答案 0 :(得分:0)

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


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',
    data: data,
    url: domainname + '/webservice/rest/server.php'
  });
  
  console.log(response);        // this does not show the result data

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

有什么想法吗?

相关问题