【问题标题】:SharePoint 2013 REST API: Updating File MetadataSharePoint 2013 REST API:更新文件元数据
【发布时间】:2016-08-03 23:05:17
【问题描述】:

我正在尝试修改刚刚上传的文件的元数据。

using (HttpClient client = new HttpClient(new HttpClientHandler { Credentials = _authenticator.Credential }))
{
    client.DefaultRequestHeaders.Add("X-HTTP-Method", "MERGE");
    client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
    client.DefaultRequestHeaders.Add("X-RequestDigest", _authenticator.Token);
    client.BaseAddress = _authenticator.Endpoint;
    client.DefaultRequestHeaders.Add("IF-MATCH", "*");

    string cmd = String.Format("_api/web/lists/GetByTitle('Drop Off Library')/items({0})", file.Id);

    string jsonString = JsonConvert.SerializeObject(file);
    StringContent test = new StringContent(jsonString, Encoding.UTF8, "application/json");

    HttpResponseMessage response = await client.PostAsync(cmd, test);
}

我成功获取了上述文件的元数据,并将其存储在我自己创建的 SharePoint 文件模型中。我修改了文件的元数据字段之一,然后尝试将反序列化的对象合并回来。这导致了 400 Bad Request 错误。关于为什么会发生这种情况的任何想法?

【问题讨论】:

    标签: c# json rest sharepoint sharepoint-2013


    【解决方案1】:

    解决方案是替换这些行:

    string jsonString = JsonConvert.SerializeObject(file);
    StringContent test = new StringContent(jsonString, Encoding.UTF8, "application/json");
    

    与

    var test = new StringContent(JsonConvert.SerializeObject(payload));
    test.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json;odata=verbose");
    

    因为在您的情况下生成了 invalid Content-Type 标头。

    有关受支持格式的列表,请参阅 JSON Light support in REST SharePoint API released。

    【讨论】:

    • 谢谢你,我把线路改成了你提供的线路,它工作正常!
    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 2014-08-17
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多