desire2learn api添加内容

时间:2012-09-11 16:34:24

标签: desire2learn

每当我对“/ d2l / api / le /(D2LVERSION:version)/(D2LID:orgUnitId)/ content / modules /(D2LID:moduleId)/ structure /”进行GET调用时,我会得到一个内容列表提供的moduleId结构。但是,当我进行POST调用时,我得到一个Page Not Found错误。我已经将orgUnitId替换为我要添加内容的课程的id,并将moduleId替换为我想要插入内容的模块的id。这是我发送的JSON块:

{"StartDate":null,
"Title":"My Test File",
"Type":1,
"ShortTitle":"MTF",
"TopicType":3,
"EndDate":null,
"IsHidden":false,
"Url":"http://somecollege.edu/",
"IsLocked":false}

我不明白为什么我在帖子上找不到页面错误而不是get。有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我们能够在我们的测试服务器上成功发布类似的链接主题。 HTTP数据包(由wireshark捕获)如下所示:

POST /d2l/api/le/1.2/8083/content/modules/24980/structure/?x_t={timestamp}&x_a={app_id}&x_b={user_id}&x_d={user_sig}&x_c={app_sig} HTTP/1.1\r\n
Host: {test_hostname}\r\n
Content-Length: 186\r\n
Content-Type: application/json\r\n
Accept-Encoding: identity, deflate, compress, gzip\r\n
Accept: */*\r\n
\r\n

JavaScript Object Notation: application/json
Object
    Member Key: "StartDate"
        Null value
    Member Key: "TopicType"
        Number value: 3
    Member Key: "ShortTitle"
        String value: MTF
    Member Key: "Title"
        String value: My Test File
    Member Key: "Url"
        String value: http://www.desire2learn.com/
    Member Key: "IsHidden"
        False value
    Member Key: "IsLocked"
        False value
    Member Key: "EndDate"
        Null value
    Member Key: "Type"
        Number value: 1

以下是发送的UTF-8字符串时打印出的JSON数据:

{"StartDate": null, "TopicType": 3, "ShortTitle": "MTF", "Title": "My Test File", "Url": "http://www.desire2learn.com/", "IsHidden": false, "IsLocked": false, "EndDate": null, "Type": 1}

我发现我们的JSON和你的JSON之间没有显着差异,所以问题可能在于你实际发送的数据包。 404会建议您使用的路线不完全正确(例如,路线中的'结构'后应该有一个尾部斜线)。

您也可能遇到拨打电话的用户上下文的权限问题。请注意,查看课程内容(和结构)的角色权限与创建管理课程内容的权限不同。您应该确保进行调用的用户上下文具有一个角色,该角色不仅可以为其查看课程内容,还可以创建和管理内容。

如果这些建议都没有帮助,那么我建议升级到下一级别的支持(打开D2L的Valence问题跟踪器问题,或联系Valence支持电子邮件地址),以便他们可以更直接地帮助您细节来回。