在C#中,可以使用HttpCookie
类来读取Cookie信息。以下是一个简单的示例,演示了如何从HTTP响应中读取Cookie并将它们保存到HttpCookieCollection
对象中:
using System;
using System.Web;
class Program
{
static void Main()
{
// 模拟一个HTTP响应,包含两个Cookie
string cookieHeader = "Set-Cookie: name1=value1; expires=Thu, 01 Jan 2030 00:00:00 UTC; path=/; domain=.example.com; HttpOnly\r\nSet-Cookie: name2=value2; expires=Thu, 01 Jan 2030 00:00:00 UTC; path=/; domain=.example.com;";
// 创建一个HttpCookieCollection对象,用于存储解析后的Cookie
HttpCookieCollection cookies = new HttpCookieCollection();
// 使用HttpWebRequest或HttpResponse对象从HTTP响应中读取Cookie
// 在这个示例中,我们直接使用字符串cookieHeader来模拟这个过程
string[] cookiePairs = cookieHeader.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string cookiePair in cookiePairs)
{
int eqPos = cookiePair.IndexOf('=');
if (eqPos != -1)
{
string cookieName = cookiePair.Substring(0, eqPos);
string cookieValue = cookiePair.Substring(eqPos + 1);
// 创建一个新的HttpCookie对象,并设置其名称和值
HttpCookie newCookie = new HttpCookie(cookieName, cookieValue);
// 将新创建的Cookie添加到HttpCookieCollection对象中
cookies.Add(newCookie);
}
}
// 遍历HttpCookieCollection对象,输出每个Cookie的名称和值
foreach (HttpCookie cookie in cookies)
{
Console.WriteLine("Cookie Name: " + cookie.Name + ", Cookie Value: " + cookie.Value);
}
}
}
在这个示例中,我们首先创建了一个模拟的HTTP响应头,其中包含了两个Cookie。然后,我们使用HttpCookieCollection
对象来存储解析后的Cookie。接下来,我们遍历模拟的HTTP响应头中的每一行,找到等号(=)的位置,从而提取出Cookie的名称和值。最后,我们将解析出的Cookie添加到HttpCookieCollection
对象中,并遍历该对象以输出每个Cookie的名称和值。