Как загрузить строку через HTTP из .NET 4.5?

У меня очень простая потребность - мой код С# должен подключаться к удаленному серверу через HTTP и загружать строку. Тривиальный запрос GET, не более того.

Чтобы мое приложение оставалось отзывчивым, я также хочу наложить таймаут (скажем, 3 секунды) на операцию.

Моя первая мысль заключалась в том, чтобы использовать System.Net.WebClient, но это не поддерживает никаких тайм-аутов.

Затем мне захотелось попробовать старый добрый System.Net.HttpWebRequest, но, увы, с .NET 4.5 он был отмечен как устаревшие!

Итак, что я могу использовать? Я проверил System.Net.Http пространство имен, но оно позволяет только асинхронное использование, заставляет использовать Task s, и, как правило, добавляет только дюжину различных уровней абстракции, не добавляя при этом никаких новых функций (поскольку в любом случае он использует тот же старый System.Net.HttpWebRequest)

Мне не нужен асинхронный материал, я не хочу привлекать другие потоки, я не хочу привлекать рамки Tasks, мне не нужны тонны оберток.

Каков правильный способ сделать это в .NET 4.5?

Ответ 1

HttpWebRequest класс не устарел, только его конструкторы.

Чтобы привести документацию :

Не используйте конструктор HttpWebRequest. Используйте метод WebRequest.Create для инициализации новых объектов HttpWebRequest. Если схема для Uniform Resource Identifier (URI) равна http:// или https://, Create возвращает объект HttpWebRequest.

Ответ 2

Только конструктор устарел, а не сам класс HttpWebRequest. Используйте WebRequest.Create, чтобы создать экземпляр HttpWebRequest.