Ошибка при запросе
Осуществляю запросы таким образом
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = method;
if (method == "POST") {
var data = Encoding.ASCII.GetBytes(content);
request.ContentType = content_type;
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream()) {
stream.Write(data, 0, data.Length);
}
}
foreach (var item in headers) {
request.Headers.Add(item.Key, item.Value);
}
request.Timeout = timeout;
request.ReadWriteTimeout = timeout;
request.AllowAutoRedirect = auto_redirect;
request.CookieContainer = cookie_container;
HttpWebResponse response;
try {
response = (HttpWebResponse)request.GetResponse();
} catch (WebException ex) {
response = (HttpWebResponse)ex.Response;
if (response == null)
throw;
}
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
Часто при использовании прокси на последнюю строку выдает ошибку
The response ended prematurely, with at least 677 additional bytes expected
Как можно решить эту проблему?
Ответы (1 шт):
The response ended prematurely, with at least 677 additional bytes expected
Означает, что пришел ответ, содержащий в HTTP заголовке Content-Length, значение которого больше на 677 байт, чем было реально получено данных, после чего отвечающая сторона принудительно закрыла соединение.
Здесь нечего исправлять со стороны вашего кода, он не является источником данный ошибки. Единственное, что можно сделать, это попытаться все-таки прочитать данные, которые пришли и погасить исключение. Корректность данных при подобных ошибках, конечно же, не гарантируется.
Источником проблемы, как уже подмечено выше в комментариях, является либо ошибка в реализации сервера, либо сетевые проблемы при передаче данных.