通过使用Moodle Web Service(REST)调用core_user_get_users_by_field
,我成功获取了用户详细信息。其中一个返回的字段为profileimageurl
,链接到我的用户个人资料图片,如下所示:
http://my_moodle_server/pluginfile.php/89/user/icon/f1
不幸的是,该链接仅适用于我已登录的浏览器,否则会重定向到标准用户图标(灰色匿名面)。
因此,为了从使用moodle Web服务的客户端应用程序获取实际图片,我认为我必须调用core_files_get_files
并传递正确的值。所以我试图将这个链接重新映射到这样的调用参数:
contextid: 89
component: "user"
filearea: "icon"
itemid: 0
filepath: "/"
filename: "f1.png" (also tryed without .png)
and of course my valid token
但我得到的只是:
{"parents":[],"files":[]}
参数似乎正式正确(否则我会得到一个例外)但是我只得到空响应,告诉我某些值不正确。
答案 0 :(得分:3)
好的,我找到了解决问题的方法。我在这里发布答案也是因为关于Moodle Web服务的信息不多......
首先,core_files_get_files
不是这样的...它只显示文件信息,它不会给你实际的文件内容(二进制)。
幸运的是,从外部客户端应用程序调用时,将使用等效的URL:
http://my_moodle_server/的 web服务强> /pluginfile.php
它接受与http://my_moodle_server/pluginfile.php相同的参数/格式,此外,您还可以传递令牌以进行Web服务身份验证。
profileimageurl
返回的core_user_get_users_by_field
字段如下所示:
http://my_moodle_server/pluginfile.php/89/user/icon/f1
可以变成
http://my_moodle_server/webservice/pluginfile.php/89/user/icon/f1?token=my_web_service_token
另请注意,需要附加?token=
参数