0

例如,如果我HttpWebRequest访问“www.sport.com”,我想使用浏览器在之前会话中已经存储的 cookie。我怎样才能做到这一点?

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

UPDATE2: 我需要这样的东西:

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

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

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

4

2 回答 2

0

首先创建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"));

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

于 2013-02-26T09:24:31.610 回答
0

这是一个使用 HttpWebRequest 和通过 HttpContext.Current.Request.Cookies 对象提供的浏览器 cookie 的方法。

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();
}
于 2016-06-09T14:03:22.817 回答