使用OneDrive API在另一个文件夹中创建文件夹

时间:2017-03-22 09:10:42

标签: c# rest onedrive

我尝试使用OneDrive API在另一个文件夹中创建文件夹。我使用了this页面上的文档。

首先,我创建一个新文件夹JSON对象:

var folderObject = JObject.FromObject(new
{
    name = "New Folder",
    folder = new
    { }
});

其次我将此对象添加到HttpContent:

HttpContent content = new StringContent(folderObject.ToString(), Encoding.UTF8, "application/json");

然后我发这样的帖子请求:

HttpResponseMessage response = await client.PostAsync("/v1.0/drive/root/children", content);

这很好用,名为“新建文件夹”的文件夹会添加到我的云端硬盘的根目录中。现在我想在我刚刚创建的文件夹中创建一个文件夹。所以我发布了一个如下所示的帖子请求:

HttpResponseMessage response = await client.PostAsync("/v1.0/drive/root/New Folder/children", content);

我希望在之前创建的文件夹中有一个名为New Folder的新文件夹。但是这个请求给了我一个Http 400错误。

如何在另一个文件夹中创建新文件夹?

2 个答案:

答案 0 :(得分:2)

您的第二个请求格式不正确。

有两种方法可以将项目创建为另一项的子项 - 按ID或按路径。

通过id看起来像:

HttpResponseMessage response = await client.PostAsync("/v1.0/drive/root/items/{parentItem.id}/children", content);

通过路径看起来像(注意使用冒号):

HttpResponseMessage response = await client.PostAsync("/v1.0/drive/root{parentItem path}:/children", content);

鉴于背景,你最有可能的是:

HttpResponseMessage response = await client.PostAsync("/v1.0/drive/root:/New Folder:/children", content);

答案 1 :(得分:0)

如果您使用的是graphClient,则获取父文件夹的ID并将其传递给items方法,如下所示

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
      <item  android:drawable="@android:color/black" android:state_pressed="true"/>
</selector>