Tworzę aplikację do pobierania danych ze strony internetowej. Strona jest chroniona hasłem i po zalogowaniu się użytkownika zostaje utworzony plik cookie.Jak korzystać z plików cookie za pomocą HttpWebRequest
Aby odzyskać dane, aplikacja musi się najpierw zalogować: utworzyć żądanie sieciowe z nazwą użytkownika i hasłem i zapisać plik cookie. Następnie, gdy plik cookie zostanie zapisany, należy go dodać do nagłówków wszystkich żądań.
tutaj jest metoda, która sprawia, że wnioski i pobiera treść:
public void getAsyncDailyPDPContextActivationDeactivation()
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(dailyPDPContextActivationDeactivation);
IAsyncResult asyncResult = httpWebRequest.BeginGetResponse(null, null);
asyncResult.AsyncWaitHandle.WaitOne();
using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult))
using (StreamReader responseStreamReader = new StreamReader(httpWebResponse.GetResponseStream()))
{
string responseText = responseStreamReader.ReadToEnd();
}
}
Czy ktoś wie jak zmodyfikować tę metodę, aby dodać cookie w nagłówku?
Poniżej znajduje się ekran drukowania struktury nagłówka wniosku złożonym z przeglądarki:
alt text http://img404.imageshack.us/img404/4793/cookiea.jpg
Byłbym też wdzięczny, gdyby ktoś zaproponował sposób na przechowywanie plików cookie z odpowiedzi (gdy uzależnia zastosowanie żądanie http: xxx.xxx.xxx/login? nazwa_użytkownika = xxx & hasło = xxx plik cookie jest tworzony i musi być przechowywany dla przyszłych żądań).
Nie rozumiem go właściwie. Dlaczego chcesz umieścić świeżo utworzony cookiecontainer (więc jest pusty) w żądaniu, które zamierzasz wysłać? Czy nie powinno być o wiele bardziej logiczne, że musisz wypełnić ten plik cookieContainer później z odpowiedzią? Czy jest jakiś powód, że tak to jest? edit: Wiele odpowiedzi jest udzielanych w ten sposób, ale nie mogę pojąć, dlaczego tak się dzieje. – deltu100
Moja aplikacja ma niepożądane działanie. Korzystanie z httpWebRequest2.Headers.Set ("Cookie", ... działa dobrze. – Eduardo
Jeśli wcześniej logowałem się na stronie, na moim dysku HD jest zapisany plik cookie, dzięki czemu mogę programowo pomijać logowanie. żądanie sieci automatycznie wyszukuje i wypełnia zawartość zawierającą znalezione pliki cookie, lub czy musisz to zrobić ręcznie? Jak to zrobić, jeśli to ostatnie? –