我尝试使用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错误。
如何在另一个文件夹中创建新文件夹?
答案 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>