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