尝试通过REST创建文件夹时的BadRequest

时间:2014-09-22 16:33:03

标签: api office365

我已经下载了一个示例,该示例显示了我的OneDrive for Bussiness中“与大家共享”文件夹中的文件。它工作正常! 但是,当我尝试创建像this documentation这样的文件夹或文件(没有内容)时,响应变为BadRequest。

请求如下:

        string requestUrl = String.Format(CultureInfo.InvariantCulture, "{0}/files", serviceInfo.ApiEndpoint);

        // Prepare the HTTP request:
        using (HttpClient client = new HttpClient())
        {
            Func<HttpRequestMessage> requestCreator = () =>
            {
                HttpRequestMessage request = new HttpRequestMessage( HttpMethod.Post, requestUrl);
                request.Headers.Add("Accept", "application/json;odata.metadata=full");                  
                request.Content = new StringContent(@"{'__metadata':{'type':'MS.FileServices.Folder'},Name:'TestFolder'}");
                request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                return request;
            };

}

响应是BadRequest。 我认为我的问题在于“__metadata”的json值。这是对的吗?我在哪里可以找到实施此操作的实际示例?

提前致谢!

编辑:将API端点从“/ _api / web / getfolderbyserverrelativeurl('Documents')/ files”更改为“_api / files”,错误变为:“属性'__metadata'确实类型'MS.FileServices.FileSystemItem'上不存在。确保只使用由类型定义的属性名称。“

我认为我在这方面做得很好。但是,我仍然存在问题。

2 个答案:

答案 0 :(得分:1)

我不确定这对您是否有任何帮助,因为这涉及oneDrive而不是oneDrive for business。 这些文件也令人困惑:)

根据documentation请求应如下:

POST https://apis.live.net/v5.0/me/skydrive

Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

{
    "name": "My example folder"
}

如果您在标题中看到有授权访问令牌

我没有看到您向服务器发送了任何访问令牌。这就是你提出错误请求的原因。

答案 1 :(得分:0)

我正在尝试下面的方法在SP中创建一个文件夹,它对我有用。希望它也对您有用。

使用SharePoint Web API创建文件夹-

POST https://<Domain>.sharepoint.com/_api/web/folders
Accept: "application/json;odata=verbose"
Content-Type: "application/json"

{
  "ServerRelativeUrl": "/Shared Documents/<Folder-Name>"
}