![](/img/trans.png)
[英]How to update SharePoint online file's metadata using REST API?
[英]SharePoint 2013 REST API: Updating File Metadata
我正在嘗試修改剛剛上傳的文件的元數據。
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錯誤。 為什么會發生這種情況的任何想法?
解決方案是替換以下行:
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");
因為您的情況會生成無效的 Content-Type
標頭。
有關受支持格式的列表,請參閱發布的REST SharePoint API中的JSON Light支持 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.