在header中拆分Cookie
本文关键字:Cookie 拆分 header | 更新日期: 2023-09-27 18:04:32
我在header中有以下cookie
饼干:ASP.NET_SessionId = cm3bg4muwin1vmbovc1esjy3;主机= SCANDICWEB101;ieAlertDisplay = true;scandic_lb_cookie = 1702298890.0.0000;s_sv_sid = 110733906247;
这是我获取第一个
的代码var sessionId = webResponse.Headers["Set-Cookie"].Split(';')
.First(s => s.StartsWith("ASP.NET_SessionId="));
我试着得到host
, scandic_lb_cookie
和其余的,以及,但我找不到一个方法去做,你能给我一些建议吗?
可能有更快的解决方案,但以下应该有效:
string source = cookie.Substring(8); // remove the "Cookie: "
var parts = source.Split(';')
.Where(i => i.Contains("=")) // filter out empty values
.Select(i => i.Trim().Split('=')) // trim to remove leading blank
.Select(i => new { Name = i.First(), Value = i.Last() });
那么你可以这样使用它们:
foreach(var val in parts)
{
string name = val.Name;
string value = val.Value;
}
或者如果你喜欢它作为Dictionary<string, string>
:
string source = coockie.Substring(8); // remove the "Cookie: "
var parts = source.Split(';')
.Where(i => i.Contains("="))
.Select(i => i.Trim().Split('='))
.ToDictionary(i => i.First(), i => i.Last());
和
string host = parts["host"];
您应该能够遍历cookie属性。检查HttpWebResponse Cookie属性以及如何在MSDN上获取和设置Cookie。不需要做任何复杂的字符串操作。
private void ReadCookies()
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://gmail.com");
request.CookieContainer = new CookieContainer();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//Console.WriteLine(response.Headers.ToString());
//Console.WriteLine(response.StatusCode.GetHashCode());
CookieCollection IncomingCookies = response.Cookies;
Console.WriteLine("Listing out {0} cookies received.", IncomingCookies.Count);
foreach(Cookie cookie in IncomingCookies)
{
Console.WriteLine("{0} = {1}", cookie.Name, cookie.Value);
}
return;
}
这个呢:
var sessionId = webResponse.Headers["Set-Cookie"]
.Split(';')
.Where(s => s.StartsWith("scandic_lb_cookie="));