Постоянное соединение HTTP

Что я пытаюсь сделать

Я пытаюсь открыть соединение с этим потоковым веб-сервисом, использующим инфраструктуру атмосферы. Мне нужно иметь возможность открыть соединение и ждать, пока служба отправит событие, но я действительно не знаю, как это сделать.

Самое главное, чтобы соединение оставалось открытым.

Мой код до сих пор

public void LiveStream()
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.somewhere.com");

    [...]

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    using (Stream responseStream = response.GetResponseStream())
    {
        StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
        String json = reader.ReadToEnd();
        [...]
    }
    [...]
}

1 ответ

Вы можете использовать следующий фрагмент:

public async void LiveStream()
{
    using(var client = new HttpClient())
    {
        client.Timeout = new TimeSpan(SET DESIRED TIMEOUT);
        string response = client.GetStringAsync("http://api.sample.com");
    }
}

или с помощью HttpResponse

public async void LiveStream()
{
    using(var client = new HttpClient())
    {
        client.Timeout = new TimeSpan(SET DESIRED TIMEOUT);
        var response = client.GetAsync("http://api.sample.com");
        if(repsone.IsSuccessStatusCode)
        {
            string contentJson = response.Content.ReadAsStringAsync();
        }
    }
}

Помните: по умолчанию TimeOut составляет 100 секунд.

Другие вопросы по тегам