请求正文未包含指定的字节数



我正在通过C#Windows服务从调用API。在某些情况下,会引发以下错误。

请求正文未包含指定的字节数。收到101379,预计102044

在使用指定的fiddler内容长度捕获的RAW请求中。

内容长度:102044

在API的响应中,我收到以下消息。

请求正文未包含指定的字节数。收到101379,预计102044

对我来说奇怪的是,它并不是发生在每个请求中,而是随机生成的,而且是不同的点。下面指定了我用来获取内容长度的代码。

var data = Encoding.ASCII.GetBytes(requestBody); // requestBody is the JSON String
webReqeust.ContentLength = data.Length;

在REST API调用中提供内容长度是强制性的吗?

编辑1:

这就是我的web请求示例代码的样子

webReqeust = (HttpWebRequest)WebRequest.Create(string.Format("{0}{1}", requestURI, queryString));
webReqeust.Method = RequestMethod.ToString();
webReqeust.Headers.Add("Authorization", string.Format("{0} {1}", token_type, access_token)); 
webReqeust.Method = RequestMethod.ToString();
webReqeust.ContentType = "application/json";
var data = Encoding.ASCII.GetBytes(requestBody);
webReqeust.ContentLength = data.Length;
using (var streamWriter = new StreamWriter(webReqeust.GetRequestStream()))
{
streamWriter.Write(requestBody);
streamWriter.Flush();
streamWriter.Close();
}

我建议您可以尝试使用HttpClient,就像在mjwills的链接文章中所做的那样。你不必使用内容长度,但这听起来像是API强制执行的,最终你试图发布太多内容。

否则,我认为是某些东西使请求体过大。是序列化的输入数据被编码到字节数组中吗?如果发生了这种情况,那么可能没有对组成请求主体的数据强制执行正确的长度要求,我建议检查请求主体对象本身的组成情况。

最新更新