Asp.net 使用浏览器存储的cookies发出HttpWebRequest

Asp.net 使用浏览器存储的cookies发出HttpWebRequest,asp.net,cookies,httpwebrequest,Asp.net,Cookies,Httpwebrequest,例如,如果我向“www.sport.com”发出HttpWebRequest,我希望使用浏览器在以前会话中存储的cookie。我该怎么做 更新: 也许我没有解释清楚,如果我向“www.google.com”发出HttpWebRequest请求,那么request.CookieContainer必须包含chrome/firefox/ie/等的所有cookie。。。已存储在google.com以前的所有会话中。例如,在firefox中,我可以看到他们进入选项>隐私>删除单个cookie 更新2: 我

例如,如果我向“www.sport.com”发出
HttpWebRequest
,我希望使用浏览器在以前会话中存储的cookie。我该怎么做

更新:
也许我没有解释清楚,如果我向“www.google.com”发出HttpWebRequest请求,那么request.CookieContainer必须包含chrome/firefox/ie/等的所有cookie。。。已存储在google.com以前的所有会话中。例如,在firefox中,我可以看到他们进入选项>隐私>删除单个cookie

更新2: 我需要这样的东西:

在javascript中,如果我创建这样一个httpwebrequest

document.write('<script type="text/javascript" src="http://www.google.com"><\/script>')
document.write(“”)

自动获取浏览器先前会话中已存储的Cookie

首先创建HttpWebRequest,设置所有内容,然后向其中添加Cookie,如下所示:

1) 为HttpWebRequest的HttpWebRequest.CookieContainer属性创建System.Net.CookieContainer对象

request.CookieContainer = new CookieContainer();
2) 使用CookieContainer.Add方法将cookie对象添加到HttpWebRequest.CookieContainer

request.CookieContainer.Add(new Uri("http://api.search.live.net"),new Cookie("id","1234"));

更新:对于您的新评论,访问cookies非常简单,您可以从HttpContext.Current.Request.cookies获取它们。

这里有一个方法,它使用HttpWebRequest,通过HttpContext.Current.Request.cookies对象提供浏览器cookies

public static string WebRequestPostRequest(string url)
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

    CookieContainer cookieContainer = new CookieContainer();
    HttpCookieCollection httpCookies = HttpContext.Current.Request.Cookies;

    for (int j = 0; j < httpCookies.Count; j++)
    {
        HttpCookie httpCookie = httpCookies.Get(j);
        Cookie myCookie = new Cookie();

        // Convert between the System.Net.Cookie to a System.Web.HttpCookie...
        myCookie.Domain = request.RequestUri.Host;
        myCookie.Expires = httpCookie.Expires;
        myCookie.Name = httpCookie.Name;
        myCookie.Path = httpCookie.Path;
        myCookie.Secure = httpCookie.Secure;
        myCookie.Value = httpCookie.Value;

        cookieContainer.Add(myCookie);
    }

    request.Method = "POST";
    //set other request properties here...

    var response = (HttpWebResponse)request.GetResponse();

    return new StreamReader(response.GetResponseStream()).ReadToEnd();
}
公共静态字符串WebRequestPostRequest(字符串url)
{
HttpWebRequest请求=(HttpWebRequest)WebRequest.Create(url);
CookieContainer CookieContainer=新CookieContainer();
HttpCookieCollection httpCookies=HttpContext.Current.Request.Cookies;
对于(int j=0;j
我不知道如何在request.CookieContainer中填充浏览器中已存储的Cookie。谢谢gaurav,但我不需要手动设置Cookie。我需要用浏览器中已存储的cookies(例如chrome)填充request.CookieContainer,尝试类似这样的操作:“request.CookieContainer=new CookieContainer();request.CookieContainer.Add(HttpContext.Current.request.Cookies);'不幸的是,它似乎不起作用,它只给我一个cookie ASP.NET_SessionId。但是,如果我直接使用chrome浏览器提出请求,例如,如果我去google.com,有那么多cookies,也许我没有解释清楚,如果我向“www.google.com”发出HttpWebRequest请求,request.CookieContainer必须包含chrome/firefox/ie/等的所有cookies。。。已存储在以前的所有会话中。例如,在firefox中,我可以看到他们进入选项>隐私>删除单个cookie。Microsoft为HttpWebRequest(传出请求)创建了cookie cookie类型,为HttpRequestBase(传入请求)创建了HttpCookie类型。它们使所有类型都不兼容,因此不能在集合之间复制cookie。那太愚蠢了。你忘了
mycokie.HttpOnly=httpCookie.HttpOnly。它阻止客户端脚本访问cookie,但不阻止它被传输到服务器或从服务器传输。