Поддерживать HTTP-соединение в C #? - PullRequest
9 голосов
/ 14 апреля 2009

Как мне сохранить соединение в C #? Я не делаю это правильно. Должен ли я создать объект HttpWebRequest и использовать его для перехода на любые URL-адреса, которые мне нужны? я не вижу способа посетить URL, кроме статического метода HttpWebRequest.Create.

Как мне создать соединение, сохранить его, просмотреть несколько страниц / мультимедиа на странице и поддерживать прокси? (Я слышал, что прокси просты и поддержка почти стандартна?) Хорошие ответы. Как мне запросить второй URL?

{
HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create("http://google.com");
WebRequestObject.KeepAlive = true;
//do stuff
WebRequestObject.Something("http://www.google.com/intl/en_ALL/images/logo.gif");
}

Ответы [ 5 ]

19 голосов
/ 14 апреля 2009

Вы пробовали свойство HttpWebRequest.KeepAlive ? Он устанавливает соответствующий HTTP-заголовок Keep-Alive и сохраняет соединения. (Конечно, это также должно поддерживаться и включаться удаленным веб-сервером).

Документация HttpWebRequest.KeepAlive для MSDN гласит, что для соединений HTTP1.1 по умолчанию установлено значение true , поэтому я подозреваю, что сервер, с которым вы пытаетесь связаться, разрешить постоянство соединения.

Прокси-сервер используется автоматически, а его настройки берутся из настроек вашей системы (см. Internet Explorer). Также возможно переопределить настройки прокси через свойство HttpWebRequest.Proxy или путем настройки файла конфигурации приложения (см. http://msdn.microsoft.com/en-us/library/kd3cf2ex.aspx).

8 голосов
/ 14 апреля 2009

Установить HttpWebRequest.KeepAlive Свойство True .NET позаботится об остальном. Это просто пул соединений с базой данных. Работает прозрачно.

Вы можете свободно создавать новое соединение .NET выяснит, что вы подключаете уже подключенный сервер, и будет его использовать. Также зависит от вашего Net.ServicePointManager.DefaultConnectionLimit номера, он установит новые соединения (, если вы выполняете многопоточность ).

3 голосов
/ 14 апреля 2009

Для свойства HttpWebRequest.KeepAlive можно установить значение true.

Для Прокси есть также свойство: HttpWebRequest.Proxy

1 голос
/ 11 февраля 2015

У меня была похожая проблема, когда HttpWebRequest.KeepAlive = true было недостаточно чтобы поддержать это. Соединение осталось только после того, как я установил request.UnsafeAuthenticatedConnectionSharing = true и ServicePointManager.MaxServicePointIdleTime = 100000; // избегать 0 или низких значений

0 голосов
/ 15 мая 2015

Если вы используете Http 1.1, вам не следует использовать Keep-Alive, поскольку соединение неявно Keep-Alive.

Свойство HttpWebRequest.KeepAlive может быть установлено, но если вы отправляете запрос Http 1.1, он фактически не установит заголовок, если вы не установите его в Close.

Вот еще один вопрос, который имеет больше информации: является ли HTTP / 1.1-запрос неявно поддерживаемым по умолчанию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...