我为 Desire2Learn 构建了一个基本的 Valence 应用程序,现在我正在尝试发布数据,但我收到 400 或 404 错误。
如果我 使用正确的 orgUnitId 向 /d2l/api/le/(D2LVERSION: version)/(D2LID: orgUnitId)/content/root/发出GET 请求,我可以看到课程的所有内容。但是,当我发布模块类型的 ContentObjectData时,它返回 400。文档没有列出该特定请求的 400 错误,但我假设我搞砸了 ContentObjectData。我已经尝试了多次,但总是导致 400。 JSON 块如下所示: { "Title": "API Test", "ShortTitle": "", "Type": 0, "ModuleStartDate": null , "ModuleEndDate": null, "IsLocked": false, "IsHidden": true }
如果我使用正确的 orgUnitId 和 moduleId 向 /d2l/api/le/(D2LVERSION: version)/(D2LID: orgUnitId)/content/modules/(D2LID: moduleId)/structure/发出GET请求,我可以看到模块的内容。当我 发布 Topic 类型的ContentObjectData时,它返回 404。我在 Python 中执行此操作,没有给出示例 SDK 代码,因此我转换了 PHP 代码。
我一直在使用另一个带有键“Url”的 JSON 块,然后是相应的值。这是我一直在尝试发布的完全编码的多部分正文:
--redacted.132.0.68062.1336325296.611.1
Content-Disposition: form-data; name="ContentObjectData"
Content-Type: application/json
{"StartDate": null, "IsLocked": false, "TopicType": 3, "ShortTitle":
"", "Title": "API Test", "Url": "http://redacted.edu",
"EndDate": null, "IsHidden": true, "Type": 1}
--redacted.132.0.68062.1336325296.611.1
Content-Type: application/json
{"Url": "http://redacted.edu"}
--redacted.132.0.68062.1336325296.611.1--
为什么 GET 和 POST 的相同 URI 会导致 404 仅用于 POST?文档中的两个调用之间的结构看起来没有任何不同。我将此调用作为普通的 POST 请求和多部分进行了尝试,但都导致 404。我已经使用 3 个不同的用户尝试了这两个调用,其中一个具有完全的管理员权限。