您的位置:首页 > 其它

[WebBrowser][Cookie] Document.Cookie 取得的Cookies不完整問題

2012-07-24 09:23 120 查看
有時候需要取得WebBrowser所在的頁面的Cookie,就會像下面這樣寫

1
string
cookie=webBrowser1.Document.Cookie;
但取得的Cookie屬性內容並非為真正請求出去所包含的所有Cookie,若要取得實際請求會送出的網址Cookie,就可以使用InternetGetCookieEx這個WinAPI來取得,下面是API的方法宣告

1
[DllImport(
"wininet.dll"
,CharSet=CharSet.Auto,SetLastError=
true
)]
2
static
extern
bool
InternetGetCookieEx(
string
pchURL,
string
pchCookieName,StringBuilderpchCookieData,
ref
System.UInt32pcchCookieData,
int
dwFlags,IntPtrlpReserved);
3
4
[DllImport(
"wininet.dll"
,CharSet=CharSet.Auto,SetLastError=
true
)]
5
static
extern
int
InternetSetCookieEx(
string
lpszURL,
string
lpszCookieName,
string
lpszCookieData,
int
dwFlags,IntPtrdwReserved);
InternetSetCookieEx是設定Cookie,在這裡的範例不會使用到,而InternetGetCookieEx使用方式可以參閱這裡,主要是取得IE瀏覽器的Cookie,以下的靜態方法是可以輸入網址後,取得該網址所包含的Cookies

01
private
static
string
GetCookies(
string
url)
02
{
03
uint
datasize=256;
04
StringBuildercookieData=
new
StringBuilder((
int
)datasize);
05
if
(!InternetGetCookieEx(url,
null
,cookieData,
ref
datasize,0x2000,IntPtr.Zero))
06
{
07
if
(datasize<0)
08
return
null
;
09
10
cookieData=
new
StringBuilder((
int
)datasize);
11
if
(!InternetGetCookieEx(url,
null
,cookieData,
ref
datasize,0x00002000,IntPtr.Zero))
12
return
null
;
13
}
14
return
cookieData.ToString();
15
}
註:GetCookies靜態方法的代碼是修改網路上不知名版本,然後在對應上述所宣告的API參數所改寫。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: