2010-05-13 14 views
22

मैं वेबब्रोसर के नेविगेट फ़ंक्शन का उपयोग कर एक वेबसाइट लोड कर रहा हूं, और मैं चाहता हूं कि ब्राउज़र पृष्ठ को उस कुकी के साथ लोड करे जिसे मैंने दिया है।वेबब्राउज़र नियंत्रण में कुकी सेट करना

निम्नलिखित कोड काम नहीं करता:

wb.Navigate(url, null, null, "Cookie: " + cookie + "\n"); 

क्या मैं गलत कर रहा हूँ? क्या मुझे InternetSetCookie का उपयोग करना होगा? यह सबसे अच्छा समाधान की तरह प्रतीत नहीं होता है।

+0

क्या आपको इसका उत्तर मिला? –

+0

दुर्भाग्य से, नहीं। –

उत्तर

19

लग रहा है एक बेहतर तरीका है की तरह:

आयात InternetSetCookie समारोह:

Cookie temp1 = new Cookie("KEY1", "VALUE1", "/Path/To/My/App", "/"); 

कॉल InternetSetCookie समारोह उस URL के लिए कुकी सेट करने के लिए:

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] 
static extern bool InternetSetCookie(string lpszUrlName, string lpszCookieName, string lpszCookieData); 

Cookie वस्तु बनाएं

InternetSetCookie("https://my.url.com/Path/To/My/App", null, temp1.ToString() + "; expires = Sun, 01-Jan-2013 00:00:00 GMT"); 

NavigateWebBrowser उस URL पर जिसे आप जाना चाहते हैं।

webBrowser1.Navigate("https://my.url.com/Path/To/My/App"); 

सोचें कि यह समस्या का सबसे अच्छा समाधान है :)।

+1

डेटटाइम ऑब्जेक्ट से 'expires =' भाग प्राप्त करने का प्रयास करने वाले किसी भी व्यक्ति के लिए, यह कैसे करें: myDateTimeObj.ToUniversalTime().ToString("ddd, dd-MMM-yyyy HH:mm:ss") + " GMT" Daniel

+0

लिंक लिंक, लेकिन शुक्र है कि आपने कोड चिपकाया! – TEK

+0

यदि आपको केवल सत्र के लिए मेमोरी में कुकी सेट करने की आवश्यकता है, तो आप सीधे कॉल कर सकते हैं: InternetSetCookieEx ("https://my.url.com/Path/To/My/App", "KEY1", "VALUE1" , खाली खाली)। नोट: इंटरनेटसेटक्यूकी और इंटरनेटसेटक्यूएक्स (http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx) को कॉल करने के बीच एक अंतर है। व्यावहारिक रूप से, मैंने देखा है कि पृष्ठ द्वारा किए गए किसी भी अनुरोध में कुकी केवल तभी होती है जब आप "पूर्व" विधि का उपयोग करते हैं। –

3

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/"); 
+0

जब मैं ऐसा करता हूं तो मुझे डुप्लिकेट कुकीज़ मिल रही हैं। स्लीश समाप्त होने के बिना और बिना कुकी डोमेन की कोशिश की है। सेमी-कोलन के साथ और उसके बिना मूल्य की कोशिश की है। नाम/मूल्य जोड़ी और ट्रिमिंग को ट्रिम करने की कोशिश नहीं की है। मैं सोच रहा हूं कि उत्पादन में आपको कोई समस्या मिली है, कुकीज़ की सेटिंग तय की गई है और शायद आपके उत्तर को अपडेट नहीं किया है। –

+0

स्पष्टीकरण के लिए, जब मैं कुकीज़ सेट करता हूं तो मैंने डेटाबेस में सहेजा है और फिर तृतीय पक्ष वेबसाइट उन्हें सेट करती है, वे डुप्लीकेटिंग समाप्त कर देते हैं। –

संबंधित मुद्दे