Desire2learn 404尝试发布文件主题时出错

Desire2learn 404尝试发布文件主题时出错,desire2learn,valence,Desire2learn,Valence,我试图在我的d2l orgUnit中创建内容,但我一直无法找到404页面。我在Android模拟器上调用这个。我已经使用POST API成功地创建了一个模块和一个主题链接。我确实看过这篇文章,它帮助我让模块和链接工作,但我就是不能让上传文件作为一个主题来工作。我怀疑它可能是URL,因为我不确定该放什么,所以我在组织单元中创建了一个相对路径。文章提到使用“组织单元现有内容空间内的有效位置URL”。我还尝试了/content/exforced/。。。文件夹作为URL无效。我不确定这是个问题,还是一条

我试图在我的d2l orgUnit中创建内容,但我一直无法找到404页面。我在Android模拟器上调用这个。我已经使用POST API成功地创建了一个模块和一个主题链接。我确实看过这篇文章,它帮助我让模块和链接工作,但我就是不能让上传文件作为一个主题来工作。我怀疑它可能是URL,因为我不确定该放什么,所以我在组织单元中创建了一个相对路径。文章提到使用“组织单元现有内容空间内的有效位置URL”。我还尝试了/content/exforced/。。。文件夹作为URL无效。我不确定这是个问题,还是一条红鲱鱼

这是我的密码:

String body = "--xxBoundaryxx " +
    "Content-Type: application/json " +
    "{" +
    "\"Title\": \"Testing an upload\"," +
    "\"ShortTitle\": \"test\"," +
    "\"Type\": 1," +
    "\"TopicType\": 1," +
    "\"URL\": \"/test/\"," +
    "\"StartDate\": null," +
    "\"EndDate\": null," +
    "\"IsHidden\": false," +
    "\"IsLocked\": false" +
    " } " +
    "--xxBoundaryxx " +
    "Content-Disposition: form-data; name=\"file 0\"; filename=\"test.txt\" " +
    "Content-Type: text/plain " +
    "This is my sample file to try it out.";

URI uri = userContext.createAuthenticatedUri("/d2l/api/le/1.1/{OrgID}/content/modules/{ModuleID}/structure/", "Post");


DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost(uri);
post.addHeader("Content-Type", "multipart/mixed; boundary=xxBoundaryxx");
post.setEntity(new StringEntity(body));

HttpResponse response = httpClient.execute(post);
Log.i(TAG, "Statusline: " + response.getStatusLine());
这是结果体(我也为换行符添加了\r\n,但没有帮助)


发生了什么事?getStatusLine始终返回404错误。。。我知道这不是权限问题,因为我可以使用非常相似的代码成功地创建模块和链接主题。非常感谢您的指导。

您几乎肯定需要在您的帖子正文上添加终止边界(
--xxBoundaryxx--
)。对于您发送的JSON块中的
Url
属性:您可以发送一个非相对的Url(如文档中的示例);您似乎还可以只发送一个文件名(相对名称),然后上传过程将该文件放在课程内容区域的根目录中。我完全希望(a)如果您没有绝对URL,它将使用课程的根文件夹作为路径的基本部分,(b)upload API操作不会为您创建目录,但我没有全面测试
URL
属性如何处理


我已经在我们的测试服务器上测试了这个API操作,它可以正常工作(使用完全指定的
Url
,并且只有
Url
的文件名)。我还更新了Valence文档,其中包括:希望这两件事能帮助您。

谢谢您的反馈。我尝试添加--xxBoundaryxx--以终止帖子正文,并将Url元素简单地设置为“test.txt”,但仍然得到相同的404。我看了这个具体的例子(很多次!),但我似乎无法让它发挥作用。由于我的原始帖子,我还尝试了该页面上的第三个示例(上传新闻项目),以删除图片中的Url,但我仍然得到了404。我只删除了图像部分并更改为我的OrgId。是否可以发布一段代码(首选java)来完成HttpPost实例(或等效实例)的准备工作?我也尝试了这篇新闻文章,但它返回了400个未知错误。我怀疑这是因为无法添加内容类型:multipart/mixed;boundary=xxBoundaryxx头参数。谢谢您的示例。我为我们的服务器一字不差地尝试了它,但我更改了/content/。。。文件夹,以反映我在“管理文件”部分中看到的根文件夹结构。我总是得到404错误,不知道什么是错误的。有什么方法可以让我在我们的后端使用它吗?每一个多部分POST都失败了,不幸的是,我不能在保罗上进行测试——我们正处于一个过渡到新的支持资源的过程中,以便更深入地讨论和帮助使用价格平台,而不是真正能够适应的。同时,我建议您发送电子邮件
valence@desire2learn.com
并解释您的困难,包括您留下的相关问题的链接。然后,我们应该能够帮助您解决问题,而不会有太多对Stack没有意义的来回。这已经解决了。正如维克多在那里指出的,代码缺少一些必需的空行。再次感谢你的帮助!
--xxBoundaryxx 
Content-Type: application/json 
{
    "Title": "Testing an upload",
    "ShortTitle": "test",
    "Type": 1,
    "TopicType": 1,
    "URL": "/test/",
    "StartDate": null,
    "EndDate": null,
    "IsHidden": false,
    "IsLocked": false
} 
--xxBoundaryxx 
Content-Disposition: form-data; name="file 0"; filename="test.txt" 
Content-Type: text/plain 
This is my sample file to try it out.