如何更改HttpWebRequest Cookie?

问题描述:

CookiesHttpWebRequest是只读的,但我需要更改一些cookie。如何更改HttpWebRequest Cookie?

我可以使用Set-Cookie标题,但它很容易出错。无论如何,以OO的方式更改HttpWebRequest饼干?

如果不是,我怎样才能得到System.Net.Cookie的标题文本? (我将在Set-Cookie头使用它)

HttpWebRequest targetrequest = (HttpWebRequest)WebRequest.Create(targeturl); 
targetrequest.CookieContainer = new CookieContainer(); 
foreach (string clientcookie in Request.Cookies) { 
    Cookie targetcookie = new Cookie(clientcookie, Request.Cookies[clientcookie].Value, "/", targetrequest.RequestUri.Host); 
    targetrequest.CookieContainer.Add(targetcookie); 
} 
+0

的问题是`CookieCollection`在`targetrequest`不与`targetrequest.Headers`同步。如果我操作集合,它不会影响`Header`字符串。 – Xaqron 2011-01-25 11:04:22

看一看 http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.cookiecontainer(v=VS.90).aspx

您需要初始化的CookieContainer对象,然后添加你的饼干给它。

如果您从HttpWebResponse获取Cookie,只需将集合添加到CookieContainer(请参阅:http://msdn.microsoft.com/en-us/library/system.net.cookiecontainer.add(v=VS.90).aspx)。

要改变一个特定的Cookie,你应该访问并改变其值:

cookies["cookie_name"].Expiration = ...