我们能够在我们的测试服务器上成功发布类似的链接主题。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
下面是 JSON 数据作为发送的 UTF-8 字符串打印出来的样子:
{"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 支持电子邮件地址),以便他们可以更直接地帮助您并提供更多详细信息向前。