2010-05-27 6 views
0

Есть ли способ получить значение .ASPXAUTH программно.Получить значение cookie .ASPXAUTH программно

Пример: Я заходил на сайт с собственными учетными данными (POST), а затем читал ответ ... он не возвращает .APSXAUTH в CookieContainer, который я использую для отслеживания сеанса.

У каждого есть ключ, как я могу его получить и отправить его с последующими сообщениями и сообщениями?

[EDIT] Вот что мне делать, чтобы быть более точным:

  • отправить HTTP GET на страницу. читать значения, такие как _VIEWSTATE и т. д.
  • отправьте HTTP-сообщение на страницу входа. Он включает в себя информацию для входа в систему.
  • Сервер отправляет ответ 302 (перенаправление) на страницу по умолчанию. Предполагается, что файл cookie для проверки подлинности форм будет включен, но это не так.

Так я думал, что может быть лучше, чем это для отслеживания сеанса:

CookieContainer _cookieJar = new CookieContainer(); 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_url); 
request.CookieContainer = _cookieJar; 
+1

Должно быть. Можете ли вы опубликовать свой код, чтобы мы могли видеть? – David

+0

Вы были правы, он был там, я просто не читал ответ должным образом. Я создал другой запрос, тогда как я должен был просто прочитать ответ с request.GetResponse(). Я изменил это и бум, там это было ... Но теперь все закодировано ... Я не вижу ничего в тексте ответа. – TheBoyan

+0

ответ на второй вопрос (что все закодировано) я нашел в следующем потоке: http://stackoverflow.com/questions/678547/does-nets-httpwebresponse-uncompress-automatically-gziped-and-deflated-response – TheBoyan

ответ

1

Таким образом резюмировать ответ:

Если вы пытаетесь войти в систему программно на Веб-сайт, основанный на проверке подлинности на основе форм, через ваше собственное приложение, убедитесь, что вы выполняете шаги, которые вы выполняете, отслеживая файлы cookie.

Сначала создайте первоначальный GET запрос, а затем сделать POST запросы повлекут последующих, которые будут делать запрос postback.The и ответы должны быть сформулированы таким образом:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_url); 
request.CookieContainer = _cookieJar; 
HttpWebResponse httpsResponse = (HttpWebResponse)request.GetResponse(); 

CookieContainer класс обрабатывает куки, как ожидается.

И если ваш ответ кодируются с помощью Gzip просто включить следующую строку:

request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 

перед вызовом request.GetResponse()

Надеется, что это помогает кто-то там.

Смежные вопросы