将Cookie设置为WebClient c#

时间:2015-07-12 12:49:34

标签: c# cookies webclient

我已经尝试了所有的东西,并没有用cookie下载页面!

我成功获得了cookie

但是我没有成功将其设置为使用cookie进行下载

我正在使用WebClient ..

任何解决方案?

我的代码:

foreach (Cookie cook in response.Cookies)
 {

   string name =cook.Name;
    string val = cook.Value;


       if (i == 0) { coock = cook.Name + "=" + val; } else { coock = coock + "; " + cook.Name + "=" + val; }

     i++;

 }


   WebClient client = new WebClient(); 

  client.Headers.Add(HttpRequestHeader.Cookie, coock);

   client.Headers.Add("Content-Type: application/x-www-form-urlencoded");
   client.Headers.Add("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5");
  client.Headers.Add("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
  client.Headers.Add("Accept-Encoding: identity");
  client.Headers.Add("Accept-Language: en-US,en;q=0.8");
  client.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3");

  try
  {
  string respons2e = client.DownloadString("http://m.facebook.com");
  }catch{}

//这不是重复我尝试了所有解决方案..

1 个答案:

答案 0 :(得分:2)

您必须自己添加此属性:

class WebClientEx : WebClient
{
    private CookieContainer _cookies;
    private string _ref;
    public WebClientEx()
    {
        _cookies = new CookieContainer();
    }
    public CookieContainer Cookies
    {
        get { return _cookies; }
        set { _cookies = value; }
    }
    protected override WebRequest GetWebRequest(System.Uri address)
    {
        var webReq = base.GetWebRequest(address);
        if (webReq is HttpWebRequest)
        {
            var req = (HttpWebRequest)webReq;
            req.CookieContainer = _cookies;
            if (_ref != null)
            {
                req.Referer = _ref;
            }
        }
        _ref = address.ToString();
        return webReq;
    }
    protected override void Dispose(bool disposing)
    {
        _cookies = null;
        base.Dispose(disposing);
    }
}

现在,您可以从CookieContainer获取WebClientEx.Cookies对象。