2011-07-17 18 views
6

czy istnieje sposób na sprawdzenie, czy formant WebBrowser w C# .NET i żądania wysyłane przez HttpWebRequest udostępniają pliki cookie?Możliwe, że kontrola WebBrowser udostępnia pliki cookie za pomocą HttpWebRequest?

E.g. jeśli żądanie jest realizowane programowo za pomocą HttpWebRequest, a następnie HttpWebResponse ustawia plik cookie, czy istnieje sposób, aby upewnić się, że jest on również ustawiony w formancie WebBrowser?

i podobnie, jeśli użytkownik nawiguje za pomocą formantu WebBrowser i plik cookie jest ustawiony, czy jest jakiś sposób, aby zaktualizować plik CookieContainer dla HttpWebRequest?

Dzięki za pomoc!

Odpowiedz

3

trzeba by zsynchronizować pliki cookie ręcznie przy użyciu InternetSetCookieEx/InternetGetCookieEx API, a to wymagałoby że znasz wszystkie adresy URL wszystkich podinstalacji używanych przez daną stronę.

Musisz również przekazać flagę INTERNET_COOKIE_HTTPONLY, aby upewnić się, że pliki cookie są widoczne dla Twojej aplikacji w postaci HTTPONLY.

1
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri); 
request.CookieContainer = new CookieContainer(); 
request.CookieContainer.SetCookies(myUri, webBrowser1.Document.Cookie); 

(source)

I odwrotnie (nie jestem pewien):

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUri); 
//request.CookieContainer = new CookieContainer(); 
request.GetResponse(); 
webBrowser1.Document.Cookie = request.CookieContainer.GetCookies(myUri); 
+0

dzięki za odpowiedź. więc myślisz, że nie jest możliwe zrobienie obu sposobów? co jeśli użyłbym alternatywy dla formantu WebBrowser? czy są jakieś alternatywy, które pozwoliłyby mi to zrobić? – Jimmy

+0

@ Jimmy: Zaktualizowałem swoją odpowiedź. Spróbujmy. Proszę podać informacje o swoich wynikach. – abatishchev

Powiązane problemy