Я звоню через API из C # Windows. В некоторых случаях возникает следующая ошибка.
Тело запроса не содержит указанное количество байтов. Получил 101 379, ожидается 102 044
В запросе RAW, полученном с использованием длины содержимого фиддлера, как указано.
Длина содержимого: 102044
В ответе от API я получаю следующее сообщение.
Тело запроса не содержит указанное количество байтов. Получил 101 379, ожидается 102 044
Странно для меня то, что это не происходит для каждого запроса, оно генерируется случайным образом и в разных точках. Код, который я использую для получения длины контента, указан ниже.
var data = Encoding.ASCII.GetBytes(requestBody); // requestBody is the JSON String
webReqeust.ContentLength = data.Length;
Обязательно ли указывать длину содержимого в вызовах API REST?
Редактировать 1:
Вот так выглядит мой пример кода для веб-запроса
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();
}