HttpWebRequest и HttpWebResponse: поддержание состояния зарегистрированного запроса для последовательных запросов

StackOverflow https://stackoverflow.com/questions/1036854

Вопрос

У меня есть несколько цепочек HttpWebRequests и HttpWebResponses, также использующих CookieContainer.

Код имитирует, что пользователь проходит по трем различным страницам «Я согласен», которые устанавливают информацию о cookie-файлах, выполняя вход с именем пользователя и паролем на четвертой, и выполняя POST (поиск) на пятой, возвращая ответ в виде строки.

Есть ли способ сохранить объект HttpWebRequest как «залогиненный», чтобы избежать выполнения этих шагов каждый раз, когда какой-либо пользователь выполняет поиск?

Могу ли я установить его как статический, и если он пуст или отсутствует информация о cookie, он может пройти через все этапы, в противном случае просто выполнить публикацию, требуемую пользователем? Каков хороший образец для этого?.

Это было полезно?

Решение

Если сервер, на котором вы входите в систему, использует проверку подлинности на основе файлов cookie, необходимо создать System.Net.CookieContainer, в котором вы сохраните файл cookie проверки подлинности. Это довольно просто:

CookieContainer container = new CookieContainer();

// Create web request
request.CookieContainer = container;

// Create next web request
nextRequest.CookieContainer = container;

// And so on
...

Просто повторно используйте объект CookieContainer для всех ваших объектов HttpWebRequest и сохраните его в памяти для дальнейшего использования.

CookieContainer является Сериализуемым, поэтому вы можете сохранить его на диске, если вам нужно. Это позволит вам сохранить cookie-файлы даже после того, как ваш пользователь перезапустит ваше приложение.

В качестве альтернативы, если страница не использует куки-файлы, а вместо этого сохраняет идентификатор сеанса в URL-адресе, необходимо сохранить идентификатор сеанса в URL-адресе посещаемых вами страниц. Просто добавьте его к URL, и он должен работать. : -)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top