SharePoint Online API 返回:HTTP 错误 400.请求标头字段太长



我有一个循环,它将遍历数据库中的记录,提取我需要的信息,然后创建3个文件夹并上传一个文件。

这适用于大约 40 条记录,但随后它开始出错,从 sharepoint 返回以下响应:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">rn<HTML><HEAD><TITLE>Bad Request</TITLE>rn<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>rn<BODY><h2>Bad Request - Header Field Too Long</h2>rn<hr><p>HTTP Error 400. A request header field is too long.</p>rn</BODY></HTML>

不确定发生了什么,我在网上阅读了它的 cookie 待办事项,但我正在使用 HTTPClient 发送请求,所以我不知道这会如何影响它?我还看到了关于更换红隼的onlne?

谁能为我阐明这一点?为我提供一个简单但可行的解决方案?我不使用 CSOM 集成到 sharepoint online,我使用 HTTP 请求,下面是我如何与 SharePoint 交互的示例。

似乎我被暂时阻止或禁止,因为如果我等待一段时间,然后我可以发出之前失败的相同请求,它会起作用!太奇怪了。

示例代码(用于在 SharePoint 上创建资源(:

//Set Endpoint
var sharePointEndpoint = $"https://{hostname}/sites/{site}/_api/web/folders";
//Set default headers
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", sharePointToken); //Set token
client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
//Pre-Body data setup
var metaData = new MetaDataModel();
metaData.type = "SP.Folder";
//Body data setup
var bodyModel = new ExpandoObject() as IDictionary<string, object>;
bodyModel.Add("__metadata", metaData);
bodyModel.Add("ServerRelativeUrl", location + "/" + directoryName + "/");
//Set content headers
HttpContent strContent = new StringContent(JsonConvert.SerializeObject(bodyModel));
strContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
strContent.Headers.ContentType.Parameters.Add(new NameValueHeaderValue("odata", "verbose"));
// Send request, grab response
var response = await client.PostAsync(sharePointEndpoint, strContent);
//Return response message
return response;

事实证明,我在发送请求时需要使用 Content-Length 标头,完成后,我能够成功与 sharepoint 通信而不会遇到此错误。

更多信息在这里: https://social.technet.microsoft.com/Forums/en-US/26459f1c-945d-4112-9200-69c5a33a37ff/sharepoint-online-rest-api-returns-http-error-400-a-request-header-field-is-too-long?forum=sharepointdevelopment

谢谢。

最新更新