Вопрос по c#, asp.net – HttpWebRequest и HttpWebResponse: поддержание состояния зарегистрированного запроса для последовательных запросов

4

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

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

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

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

Ваш Ответ

1   ответ
5

на котором вы входите в систему, использует проверку подлинности на основе файлов 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, и он должен работать. : -)

Спасибо, я сейчас использую статический CookieContainer, который регистрируется, когда NULL или 0 файлов cookie. Как я могу проверить, истек ли срок действия файлов cookie или как-то они стали недействительными, вызывая необходимость снова войти в систему и заново сохранить cookieContainer? CRice
Я отправил еще один вопрос по этому поводу: / Stackoverflow.com вопросы / 1041851 / ... CRice

Похожие вопросы