cookie容器采用什么类型的对象?

时间:2016-08-02 23:24:05

标签: c# cookies httpwebrequest httpwebresponse httpcookie

我有以下代码: 我把什么作为GetPage的第二个参数? 第二个参数应该是同一个URL的先前cookie请求。 例如,当我发出获取请求时,我将google.com作为获取cookie的第一个参数,但对于第二个参数我如何插入它?

static void Main()
    {
        GetPage("http://google.com/",cookieContainer??);
    }

public class CookieAwareWebClient : WebClient
    {
        public CookieAwareWebClient(CookieContainer container)
        {
            CookieContainer = container;
        }

        public CookieAwareWebClient()
         : this(new CookieContainer())
        { }

        public CookieContainer CookieContainer { get; private set; }

        protected override WebRequest GetWebRequest(Uri address)
        {
            var request = (HttpWebRequest)base.GetWebRequest(address);
            request.CookieContainer = CookieContainer;
            return request;
        }
    }

 public HtmlAgilityPack.HtmlDocument GetPage(string url, CookieContainer CookieContainer)
    {
        Uri absoluteUri = new Uri("http://google.com/");
        var cookies = CookieContainer.GetCookies(absoluteUri);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.CookieContainer = new CookieContainer();
        foreach (Cookie cookie in cookies)
        {
            request.CookieContainer.Add(cookie);
        }
        request.Method = "GET";

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

        using (var reader = new StreamReader(stream))
        {
            string html = reader.ReadToEnd();
            var doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(html);
            return doc;
        }
    }

0 个答案:

没有答案