【问题标题】:C# use cookie httprequest to webclient [duplicate]C#使用cookie httprequest到webclient [重复]
【发布时间】:2014-06-04 21:16:18
【问题描述】:

我通过变量 cookiecontanse 中的 httprequest 和 cookie 登录网站。但现在我需要为 webclient 设置 cookie got。我用线

 webClient.Headers.Add(HttpRequestHeader.Cookie,cookiecontanse.ToString) 

但不起作用。为什么?

【问题讨论】:

    标签: c# cookies httprequest webclient


    【解决方案1】:

    用法:

            CookieContainer cookieJar = new CookieContainer();
            cookieJar.Add(new Cookie("my_cookie", "cookie_value", "/", "mysite"));
    
            CookieAwareWebClient client = new CookieAwareWebClient(cookieJar);
    
            string response = client.DownloadString("http://example.com/response_with_cookie_only.php");
    

    public class CookieAwareWebClient : WebClient
    {
        public CookieContainer CookieContainer { get; set; }
        public Uri Uri { get; set; }
    
        public CookieAwareWebClient()
            : this(new CookieContainer())
        {
        }
    
        public CookieAwareWebClient(CookieContainer cookies)
        {
            this.CookieContainer = cookies;
        }
    
        protected override WebRequest GetWebRequest(Uri address)
        {
            WebRequest request = base.GetWebRequest(address);
            if (request is HttpWebRequest)
            {
                (request as HttpWebRequest).CookieContainer = this.CookieContainer;
            }
            HttpWebRequest httpRequest = (HttpWebRequest)request;
            httpRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            return httpRequest;
        }
    
        protected override WebResponse GetWebResponse(WebRequest request)
        {
            WebResponse response = base.GetWebResponse(request);
            String setCookieHeader = response.Headers[HttpResponseHeader.SetCookie];
    
            if (setCookieHeader != null)
            {
                //do something if needed to parse out the cookie.
                if (setCookieHeader != null)
                {
                    Cookie cookie = new Cookie(); //create cookie
                    this.CookieContainer.Add(cookie);
                }
            }
            return response;
        }
    }
    

    您将看到 GetWebRequest 和 GetWebResponse 的两个重写方法。可以重写这些方法来处理 cookie 容器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2012-10-27
      • 1970-01-01
      • 2013-05-14
      • 2020-07-31
      • 1970-01-01
      • 2019-06-21
      相关资源
      最近更新 更多