c# - 如何使用 System.Net.Http 修补数据
问题描述
我已将文件上传到 SharePoint 并找出它的 ID。现在我需要更新该列表项上的其他一些列。问题是 System.Net.Http.HttpMethod.Patch 不存在。
public static async Task<string> UpdateFileData()
{
var (authResult, message) = await Authentication.AquireTokenAsync();
string updateurl = MainPage.rooturl + "lists/edd49389-7edb-41db-80bd-c8493234eafa/items/" + fileID + "/";
var httpClient = new HttpClient();
HttpResponseMessage response;
try
{
var root = new
{
fields = new Dictionary<string, string>
{
{ "IBX", App.IBX }, //column to update
{ "Year", App.Year}, //column to update
{ "Month", App.Month} //column to update
}
};
var s = new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat };
var content = JsonConvert.SerializeObject(root, s);
var request = new HttpRequestMessage(HttpMethod.Put, updateurl);
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", authResult.AccessToken);
request.Content = new StringContent(content, Encoding.UTF8, "application/json");
response = await httpClient.SendAsync(request);
var responseString = await response.Content.ReadAsStringAsync();
return responseString;
}
catch (Exception ex)
{
return ex.ToString();
}
}
解决方案
修改代码如下。
public static async Task<string> UpdateFileData()
{
var (authResult, message) = await Authentication.AquireTokenAsync();
string updateurl = MainPage.rooturl + "lists/edd49389-7edb-41db-80bd-c8493234eafa/items/" + fileID + "/";
var httpClient = new HttpClient();
HttpResponseMessage response;
try
{
var root = new
{
fields = new Dictionary<string, string>
{
{ "IBX", App.IBX }, //column to update
{ "Year", App.Year}, //column to update
{ "Month", App.Month} //column to update
}
};
var s = new JsonSerializerSettings { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat };
var content = JsonConvert.SerializeObject(root, s);
var request = new HttpRequestMessage(new HttpMethod("PATCH"), updateurl);
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", authResult.AccessToken);
request.Content = new StringContent(content, System.Text.Encoding.UTF8, "application/json;odata=verbose");
response = await httpClient.SendAsync(request);
var responseString = await response.Content.ReadAsStringAsync();
return responseString;
}
catch (Exception ex)
{
return ex.ToString();
}
}
或者我们也可以使用 REST API 按 ID 更新列表项。
推荐阅读
- java - 从具有自动增量值的两个不同表中插入一个表
- c# - 使用 LINQ 的 EF 动态字段选择
- c# - 访问 List 的字段
通过字符串 - java - 您如何将三个十个 Backport 类与 JDBC 一起使用?
- python - 在 pytz 中提取时区偏移的更优雅的方法是什么?
- javascript - 使用 forEach 比较先前的值
- vbscript - 从 Asp 经典页面访问 .NET TimezoneInfo 的最简单方法
- webpack - Webpack URLLoader 限制要小
- python - 如果 __init__ 包含 Clock.schedule_interval,Kivy 崩溃
- bash - Shell 脚本数组未打印正确的值