【问题标题】:Sharepoint online API returns: HTTP Error 400. A request header field is too longSharepoint 在线 API 返回:HTTP 错误 400。请求标头字段太长
【发布时间】:2019-09-20 17:31:01
【问题描述】:

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

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

我不确定发生了什么事,我在网上阅读了它与 cookie 的关系,但我使用 HTTPClient 发送请求,所以我不知道这会如何影响它?我在网上也看到了关于改变红隼的事情?

有人可以帮我解释一下吗?为我提供一个简单但可行的解决方案?我不使用 CSOM 在线集成到 sharepoint,我使用 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;

【问题讨论】:

  • 有什么想法吗?谢谢!

标签: c# httpclient sharepoint-online sharepoint-api


【解决方案1】:

原来我需要在发送请求时使用 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

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2018-10-06
    • 2019-03-17
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多