HttpWebRequest выдает ошибку «Получен неожиданный EOF или 0 байт из транспортного потока» при чтении ответа APIC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 HttpWebRequest выдает ошибку «Получен неожиданный EOF или 0 байт из транспортного потока» при чтении ответа API

Сообщение Anonymous »

Я работаю над приложением, которое извлекает данные о стране из API https://restcountries.com/v3.1/all с помощью HttpWebRequest. Несколько недель назад код работал нормально, но теперь выдает следующую ошибку:
System.IO.IOException: 'Получен неожиданный EOF или 0 байт из транспортного потока.'< /p>
Эта ошибка возникает при вызове responseStream.ReadToEnd() для чтения тела ответа. Я не вносил никаких изменений в код, поэтому не понимаю, почему это происходит.
Вот код, который я использую:
общедоступный класс CountryRepository
{
private List _Countries = new List();

Код: Выделить всё

private string url = "https://restcountries.com/v3.1/all";

public List GetCountries()
{
string json = CallRestMethod(url);
JArray jsonArray = JArray.Parse(json); // Parse JSON

foreach (JObject item in jsonArray)
{
_Countries.Add(new Country
{
Code = (string)item["cca2"],
Name = (string)item["name"]?["common"],
Capital = item["capital"] != null && item["capital"].Type == JTokenType.Array
? (string)item["capital"].First
: null,
Population = (int)(item["population"] ?? 0),
Area = item["area"]?.Type == JTokenType.Null ? 0 : (float)(item["area"]),
Region = (string)item["region"],
});
}

return _Countries;
}

public static string CallRestMethod(string url)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "GET";
webRequest.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Encoding encoding = Encoding.GetEncoding("utf-8");
using (StreamReader responseStream = new
StreamReader(webResponse.GetResponseStream(), encoding))
{
string result = responseStream.ReadToEnd();
webResponse.Close();
return result;
}
}
}
Я проверил конечную точку API в Postman (там она работает нормально).
Увеличил значения таймаута и установил KeepAlive = false
Когда я скопировал URL-адрес и открыл его, он выдал мне «Синтаксическая ошибка: JSON.parse: незавершенная строка в строке 1, столбец 477495 данных JSON», если это связано с проблема.
Что может вызвать эту ошибку при чтении потока ответов из HttpWebRequest?

Подробнее здесь: https://stackoverflow.com/questions/792 ... -transport
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»