我使用WebBrowser的導航功能加載網站,並且我希望瀏覽器使用我提供的cookie加載頁面。在WebBrowser控件中設置Cookie
下面的代碼不起作用:
wb.Navigate(url, null, null, "Cookie: " + cookie + "\n");
我在做什麼錯?我必須使用InternetSetCookie嗎?這似乎不是最好的解決方案。
我使用WebBrowser的導航功能加載網站,並且我希望瀏覽器使用我提供的cookie加載頁面。在WebBrowser控件中設置Cookie
下面的代碼不起作用:
wb.Navigate(url, null, null, "Cookie: " + cookie + "\n");
我在做什麼錯?我必須使用InternetSetCookie嗎?這似乎不是最好的解決方案。
貌似有一個更好的辦法:
導入InternetSetCookie
功能:
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetSetCookie(string lpszUrlName, string lpszCookieName, string lpszCookieData);
創建Cookie
對象:
Cookie temp1 = new Cookie("KEY1", "VALUE1", "/Path/To/My/App", "/");
呼叫InternetSetCookie
功能設置cookie爲URL
InternetSetCookie("https://my.url.com/Path/To/My/App", null, temp1.ToString() + "; expires = Sun, 01-Jan-2013 00:00:00 GMT");
Navigate
WebBrowser
到你想要去的URL。
webBrowser1.Navigate("https://my.url.com/Path/To/My/App");
認爲這是問題:)最好的解決方案。
對於任何想從DateTime對象中獲取'expires ='部分的人,請按照以下步驟操作:myDateTimeObj.ToUniversalTime().ToString("ddd, dd-MMM-yyyy HH:mm:ss") + " GMT"
–
Daniel
2013-06-06 14:51:31
鏈接已死,但幸好您粘貼了代碼! – TEK 2015-05-21 20:41:42
如果您需要在會話的內存中設置cookie,您可以直接撥打: InternetSetCookieEx(「https://my.url.com/Path/To/My/App」,「KEY1」,「VALUE1」 ,NULL,NULL)。 注意:調用InternetSetCookie和InternetSetCookieEx是有區別的(http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx)。在實踐中,我發現只有使用「Ex」方法時,頁面發出的任何後續請求才包含cookie。 – 2015-07-15 13:37:06
The proper way is using InternetSetCookieEx.
[DllImport("wininet.dll")]
static extern InternetCookieState InternetSetCookieEx(
string lpszURL,
string lpszCookieName,
string lpszCookieData,
int dwFlags,
int dwReserved);
enum InternetCookieState : int
{
COOKIE_STATE_UNKNOWN = 0x0,
COOKIE_STATE_ACCEPT = 0x1,
COOKIE_STATE_PROMPT = 0x2,
COOKIE_STATE_LEASH = 0x3,
COOKIE_STATE_DOWNGRADE = 0x4,
COOKIE_STATE_REJECT = 0x5,
COOKIE_STATE_MAX = COOKIE_STATE_REJECT
}
下面是一些代碼在website that shows your HTTP headers進行測試。
InternetSetCookieEx("http://request.urih.com/", null, "TestData=Test;", 0, 0);
webBrowser1.Navigate("http://request.urih.com/");
當我這樣做時,我收到了重複的Cookie。已嘗試cookie域,並且沒有結束斜線。嘗試了有和沒有分號的值。試過不修剪名稱/值對並修剪。 我只是想知道在生產中是否發現問題,修復了Cookie的設置,或許沒有更新您的答案。 – 2018-03-06 10:07:59
爲了澄清,當我設置cookie時,我保存在數據庫中,然後第三方網站設置它們,它們最終會重複。 – 2018-03-06 20:39:19
您是否找到了答案? – 2012-04-25 15:35:00
不幸的是,沒有。 – 2012-05-31 22:18:58