Тайм-аут операции WebRequest WebResponse - PullRequest
1 голос
/ 06 июня 2019

У меня есть несколько Http-веб-запросов в разных циклах и т. Д. Веб-запросы получают данные от различных API.

Кажется, что они иногда работают, но большую часть времени (в последнее время) яполучаю ошибки исключения тайм-аута (операция истекла) и я не уверен почему.

Я принимаю, что время от времени или время от времени вы будете получать ошибку тайм-аута, но это происходит слишком часто.

Вот два из моих кодов WebRequest:

    public static EventList getEvents()
    {
        Uri myURI = new Uri("http://feeds.betway.com/events?key=XXX&keywords=horse-racing,uk-and-ireland&and=true");

        WebRequest webRequest = WebRequest.Create(myURI);
        webRequest.Timeout = 3000;

        using (WebResponse webResponse = webRequest.GetResponse())
        {
            using (Stream stream = webResponse.GetResponseStream())
            {
                using (var reader = XmlReader.Create(stream))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(EventList));
                    EventList data = (EventList)serializer.Deserialize(reader);

                    return data;
                }
            }
        }
    }

  public static List<WilliamHillData.Event> GetAllCompetitionEvents(string compid)
  {
        string res = "";
        Uri myURI = new Uri("https://gw.whapi.com/v2/sportsdata/competitions/" + compid + "/events/?&sort=startDateTime");

        WebRequest webRequest = WebRequest.Create(myURI);
        webRequest.Headers.Add("Content-Type", "application/json");
        webRequest.Headers.Add("apiKey", "xxx");
        webRequest.Timeout = 2000;

        using (WebResponse webResponse = webRequest.GetResponse())
        {
            using (Stream stream = webResponse.GetResponseStream())
            {
                StreamReader reader = new StreamReader(stream, Encoding.UTF8);
                res = reader.ReadToEnd();
            }
        }

        JObject jobject = JObject.Parse(res);
        List<WilliamHillData.Event> list = jobject["events"].ToObject<List<WilliamHillData.Event>>();

        return list;

  }

Я не вижу ничего плохого в своем коде, так как я правильно располагаю объекты и установил Timeout.Нужно ли увеличить время ожидания или я что-то упустил?

Может ли это также быть проблемой сети с нашей стороны?

...