【问题标题】:Reading the value of cookies in cookie-aware WebClient在 cookie 感知的 WebClient 中读取 cookie 的值
【发布时间】:2014-05-16 17:52:55
【问题描述】:

我正在使用此答案提供的代码来下载网站并与网站交互。

https://stackoverflow.com/a/1031335/1689144

// establish the client and base
CookieAwareWebClient client = new CookieAwareWebClient();
client.BaseAddress = @"some_url";

// establish login data
var loginData = new NameValueCollection();
loginData.Add("username", Settings.Default.username.ToLower());
loginData.Add("password", Settings.Default.password);

// begin login
client.UploadValues("/login", "POST", loginData);

这就是我遇到麻烦的地方。我认为CookieContainerNameValueCollection。不是……怎么看CookieContainer的内容?

//NOM NOM NOM cookies
var nomNomCookies = client.CookieContainer;
foreach (var cookie in nomNomCookies)
{
    //test
    Console.WriteLine(cookie.Name + " " + cookie.Value);
}

【问题讨论】:

    标签: c# cookies webclient httpresponse


    【解决方案1】:

    如果你想使用这个 hacky 解决方案:

    public static IEnumerable<Cookie> GetAllCookies(CookieContainer cookieContainer)
    {
        var domainTable = (Hashtable)cookieContainer
                                .GetType()
                                .InvokeMember(
                                    name: "m_domainTable",
                                    invokeAttr: BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance,
                                    binder: null,
                                    target: cookieContainer,
                                    args: new object[] { });
    
        return domainTable.Keys.Cast<string>()
                    .Select(d => cookieContainer.GetCookies(new Uri("http://" + d.TrimStart('.'))))
                    .SelectMany(c => c.Cast<Cookie>());
    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 2013-12-07
      • 1970-01-01
      相关资源
      最近更新 更多