在C#中,HttpWebRequest是一個用于發送HTTP請求的類。當服務器返回一個帶有302狀態碼的重定向響應時,HttpWebRequest會自動跟隨重定向。
當重定向發生時,HttpWebRequest會創建一個新的HttpWebRequest對象,并將原始請求的CookieContainer屬性值傳遞給新的請求對象。因此,新的請求對象應該能夠訪問到原始請求中的Cookie。
以下是一個示例代碼,展示了如何獲取重定向后的Cookie:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://example.com");
request.AllowAutoRedirect = true; // 允許HttpWebRequest跟隨重定向
request.CookieContainer = new CookieContainer(); // 創建一個CookieContainer對象
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// 獲取重定向后的Cookie
CookieCollection cookies = response.Cookies;
foreach (Cookie cookie in cookies)
{
Console.WriteLine(cookie.Name + ": " + cookie.Value);
}
在上述示例中,我們首先創建了一個HttpWebRequest對象,并將AllowAutoRedirect屬性設置為true,以允許自動跟隨重定向。接著,我們創建了一個CookieContainer對象,并將其賦值給HttpWebRequest的CookieContainer屬性。
當發送請求后,如果服務器返回一個302狀態碼的重定向響應,HttpWebRequest會自動跟隨重定向,并在新的請求中保留原始請求的Cookie。
最后,我們可以通過HttpWebResponse的Cookies屬性獲取重定向后的Cookie,并進行進一步處理。