प्रतिबिंब, निजी क्षेत्र कि CookieContainer वस्तु में सभी डोमेन अहम प्राप्त करने के लिए इस्तेमाल किया जा सकता
प्र मैं कैसे है कि निजी क्षेत्र के नाम मिल गया हो?
उत्तर। परावर्तक का उपयोग करना;
अपनी घोषित किया जाता है के रूप में:
private Hashtable m_domainTable;
एक बार हम निजी क्षेत्र मिलता है तो हम डोमेन कुंजी मिल जाएगा, तो कुकीज़ हो रही एक सरल यात्रा है।
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Net;
using System.Collections;
namespace ConsoleApplication4
{
static class Program
{
private static void Main()
{
CookieContainer cookies = new CookieContainer();
cookies.Add(new Cookie("name1", "value1", "/", "domain1.com"));
cookies.Add(new Cookie("name2", "value2", "/", "domain2.com"));
Hashtable table = (Hashtable) cookies.GetType().InvokeMember("m_domainTable",
BindingFlags.NonPublic |
BindingFlags.GetField |
BindingFlags.Instance,
null,
cookies,
new object[] { });
foreach (var key in table.Keys)
{
foreach (Cookie cookie in cookies.GetCookies(new Uri(string.Format("http://{0}/", key))))
{
Console.WriteLine("Name = {0} ; Value = {1} ; Domain = {2}", cookie.Name, cookie.Value,
cookie.Domain);
}
}
Console.Read();
}
}
}
स्रोत
2012-12-28 18:42:45
यह विधि http प्रोटोकॉल और https के लिए बनाई गई कुकीज़ को नहीं दिखाया जाएगा। – user1713059
@ user1713059 - यह कहां दिखाता है कि यह केवल HTTP के लिए ऐसा कर रहा है? वैसे भी, यह http + https दोनों के लिए कुकीज़ प्राप्त करेगा। –
कंसोल प्रिंट लूप में 'string.Format ("http: //' है।' GetCookies' विधि को केवल http के साथ उपसर्ग किए गए डोमेन नामों का उपयोग करके बुलाया जाता है। – user1713059