1

Desire2Learn の REST API を使用してロッカーにファイルをアップロードするにはどうすればよいですか? サーバーはステータス コード 200 を返しますが、「予期しないエラーが発生しました」

POST /d2l/api/le/1.0/locker/mylocker/?x_a={appID}&x_c={appSig}&x_b={myUserID}&x_d={myUserSig}&x_t={time) HTTP/1.1
Host: myHost.com
Accept: */*
Content-type: multipart/mixed;boundary=BOUNDARY
Content-Length: 181

--BOUNDARY
Content-Type: text/plain
Content-Length: 4

test
--BOUNDARY
Content-type: application/json
Content-Length: 36

{"Description":"","IsPublic":"true"}
--BOUNDARY--

EDIT (別のリクエスト、同じ結果)

POST /d2l/api/le/1.0/locker/mylocker/testFile?{authQueryparms}
Host: myHost.com
Accept: */*
Content-type: multipart/mixed;boundary=BOUNDARY
Content-Length: 288

--BOUNDARY
Content-Type: text/plain
Content-Length: 4

test
--BOUNDARY
Content-type: application/json
Content-Length: 142

{ "Description": {"Text": "Text description string for file.", "HTML": "<p>Text description string for <i>file</i>.</p>" }, "IsPublic": true }
--BOUNDARY--
4

1 に答える 1

0

(よし、もう一度やってみよう)

元の質問の問題は、バックエンド サービスがアップロードされたファイルに付けるファイル名を認識していないことであり、それを配置する場所に問題があることではないようです (それをロッカーのルート フォルダー)。リクエストのファイル アップロード部分には、ファイル名を提供するContent-Dispositionヘッダーが必要です。テスト サーバーで動作することを確認したリクエストの例を次に示します。

POST http://test.host/d2l/api/le/1.0/locker/mylocker/?{authQueryPams} HTTP/1.1
Content-Type: multipart/mixed; boundary=8cefca62f73c56c
Host: test.host
Content-Length: 595514

--8cefca62f73c56c
Content-Type: application/json

{"Description":"Test","IsPublic":false}
--8cefca62f73c56c
Content-Disposition: form-data; name=""; filename="test.jpg"
Content-Type: image/jpeg

<binary data>
--8cefca62f73c56c--
于 2012-04-27T17:15:33.103 に答える