我们试图从锁柜中提取文件和文件夹,但是命令(/ d2l / api / le /(D2LVERSION:version)/ locker / myLocker /(string:path))不喜欢文件或文件夹名称。它返回Bad Request或Invalid Token,具体取决于我们如何尝试处理末尾的空格(即字符串替换为%20)。
我们如何检索名称中带空格的文件/文件夹?
答案 0 :(得分:0)
我可以想到你遇到的一些可能的问题。
当您提供D2LUserContext对象的API路径时,您只需要传入具有内部空间而不是转义字符的API路径。因此,指向test file name
的文件的正确路径可能如下所示:
/d2l/api/le/1.0/locker/myLocker/firstFolderBelowRoot/test file name
要为此创建经过身份验证的网址,您需要调用
yourD2LUserContext.createAuthenticatedUri('/d2l/api/le/1.0/locker/myLocker/firstFolderBelowRoot/test file name', 'GET')
这将形成一个经过身份验证的URL,您可以使用该URL从锁定器中获取名为test file name
的文件。要获取其包含的文件夹:
yourD2LUserContext.createAuthenticatedUri('/d2l/api/le/1.0/locker/myLocker/firstFolderBelowRoot/', 'GET')
请注意,当您要在锁定器中标识文件夹时,path
参数必须以尾部斜杠结尾。 (如果您尝试获取文件夹,并且没有尾部斜杠,则可能是您的问题的来源。)
拥有该URL后,您需要使用某种HTTP库来实际进行调用。我们的内部PHP开发人员建议使用HttpRequest而不是cURL和PHP。最值得注意的是,您应该使用的URL应该保留URL的路径组件中文件或文件夹名称中的空格。
当我使用Python客户端测试9.4.1实例来从锁定器进行提取/放置,或者使用用户上下文对象生成URL然后将这些URL提供给浏览器时,事情似乎正常。使用Python客户端对10.0.0测试实例进行测试似乎也在起作用。