我正在尝试对一些代码进行单元测试,我需要替换以下代码:
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create( uri );
httpWebRequest.CookieContainer = new CookieContainer();
使用
WebRequest webRequest = WebRequest.Create( uri );
webRequest.CookieContainer = new CookieContainer();
基本上,如何在不使用HttpWebRequest的情况下将cookies添加到请求中?
发布于 2012-06-23 05:37:55
根据您的注释,您可以考虑编写一个extension method
public static bool TryAddCookie(this WebRequest webRequest, Cookie cookie)
{
HttpWebRequest httpRequest = webRequest as HttpWebRequest;
if (httpRequest == null)
{
return false;
}
if (httpRequest.CookieContainer == null)
{
httpRequest.CookieContainer = new CookieContainer();
}
httpRequest.CookieContainer.Add(cookie);
return true;
}
然后你就可以像这样编写代码:
WebRequest webRequest = WebRequest.Create( uri );
webRequest.TryAddCookie(new Cookie("someName","someValue"));
发布于 2012-06-23 05:39:17
WebRequest是一个没有CookieContainer属性的抽象类。此外,您不能使用Headers集合(未实现异常),因此任何尝试,如webRequest.Headers.Add("Cookie","...")都会失败。
很抱歉,您没有机会在WebRequest中使用cookies。
坚持使用HttpWebRequest,并使用其Headers集合添加/编辑任意数量的cookies!
发布于 2012-06-23 05:28:26
试着这样做:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com/default.html");
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Cookie("ConstoCookie", "Chocolate Flavour"));
https://stackoverflow.com/questions/11164275
复制相似问题