0

ロッカーからファイルとフォルダーをプルしようとしていますが、コマンド (/d2l/api/le/(D2LVERSION: version)/locker/myLocker/(string: path)) はファイルまたはフォルダー内のスペースを好みません名前。最終的にスペースを処理しようとする方法に応じて、Bad Request または Invalid Token のいずれかを返します (つまり、文字列を %20 に置き換えます)。

名前にスペースが含まれるファイル/フォルダーを取得するにはどうすればよいですか?

4

1 に答える 1

0

あなたが直面している可能性のある問題をいくつか思いつくことができます。

D2LUserContext オブジェクトへの API パスを提供する場合、エスケープ文字ではなく、内部スペースを含む API パスのみを渡す必要があります。したがって、という名前のファイルへの適切なルートは次のtest file nameようになります。

/d2l/api/le/1.0/locker/myLocker/firstFolderBelowRoot/test file name

このための認証済み URL を作成するには、次のように呼び出します。

yourD2LUserContext.createAuthenticatedUri('/d2l/api/le/1.0/locker/myLocker/firstFolderBelowRoot/test file name', 'GET')

test file nameこれにより、ロッカーから名前が付けられたファイルを取得するために使用できる認証済み URL が作成されます。含まれているフォルダーを取得するには:

yourD2LUserContext.createAuthenticatedUri('/d2l/api/le/1.0/locker/myLocker/firstFolderBelowRoot/', 'GET')

pathロッカー内のフォルダーを識別する場合は、パラメーターの末尾にスラッシュを付ける必要があることに注意してください。(フォルダーをフェッチしようとしていて、末尾のスラッシュがない場合、それが問題の原因である可能性があります。)

その URL を取得したら、実際に呼び出しを行うために何らかの HTTP ライブラリを使用する必要があります。内部の PHP 開発者は、PHP で cURL ではなく HttpRequest を使用することを推奨しています。最も注目すべきは、呼び出しに使用する URL は、URL のパス コンポーネントのファイルまたはフォルダー名のスペースを保持する必要があることです。

Python クライアントを使用して 9.4.1 インスタンスに対してテストを行い、ロッカーからフェッチ/プットを実行するか、ユーザー コンテキスト オブジェクトを使用して URL を生成し、それらの URL をブラウザーにフィードすると、問題なく動作するように見えます。Python クライアントを使用した 10.0.0 テスト インスタンスに対するテストも機能しているようです。

于 2012-08-30T15:21:27.450 に答える