在我的应用程序中,我必须使用WebBrowser
Control 登录,然后使用 访问站点HttpWebRequest
,为此我必须将 cookie 从 WebBrowser
Control 传输到CookieContainer
of HttpWebRequest
。我正在使用以下代码来实现这一点。
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;
}
}
到目前为止,这段代码运行良好,但我正在尝试使用 2 个WebBrowser
控件登录到同一个站点但不同的帐户,并且由于该方法GetGlobalCookies(string uri)
是静态的,它如何以不同的方式对待 2 个WebBrowser
控件是我的问题?
实际上,在这里我可以使用 1 个WebBrowser
控件登录到 1 个帐户,但之后如果我尝试使用另一个WebBrowser
控件登录到另一个帐户,它会自动重定向到第一个帐户。如何处理这个。