[英]Using 2 WebBrowser controls and dealing with HTTPONLY cookies in C#
在我的應用程序中,我必須使用WebBrowser
Control登錄,然后使用HttpWebRequest
訪問站點,以實現此目的,我必須將cookie從WebBrowser
Control傳輸到HttpWebRequest
的CookieContainer
。 我正在使用以下代碼來實現這一目標。
this._cookieContainer.SetCookies(uri,GetGlobalCookies(uri));
這里
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref uint pcchCookieData, int dwFlags, IntPtr lpReserved);
const int INTERNET_COOKIE_HTTPONLY = 0x00002000;
public static string GetGlobalCookies(string uri)
{
uint datasize = 1024;
StringBuilder cookieData = new StringBuilder((int)datasize);
if (InternetGetCookieEx(uri, null, cookieData, ref datasize, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero)
&& cookieData.Length > 0)
{
return cookieData.ToString().Replace(';', ',');
}
else
{
return null;
}
}
到現在GetGlobalCookies(string uri)
這段代碼可以正常工作,但是我正嘗試使用2個WebBrowser
控件登錄到同一網站但使用不同的帳戶,並且由於方法GetGlobalCookies(string uri)
是靜態的,因此我該如何不同地對待2個WebBrowser
控件呢?
實際上,在這里我能夠使用1個WebBrowser
控件登錄到1個帳戶,但是在此之后,如果我嘗試使用另一個WebBrowser
控件登錄到另一個帳戶,它會自動重定向到第一個帳戶。 如何處理。
這里的實際問題是使用2個WebBrowser控件。 因此,為了解決這個問題,我必須同步使用InternetSetCookieEx / InternetGetCookieEx API的餅干在解釋這個崗位
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.