1、通过WebClient对象的Headers设置cookie
WebClient wb = new WebClient(); wb.Headers.Add(HttpRequestHeader.Cookie, "somecookie"); //设置一个cookie值 wb.Headers.Add(HttpRequestHeader.Cookie, "cookiename=cookievalue"); //设置多个cookie值 wb.Headers.Add(HttpRequestHeader.Cookie, "cookiename1=cookievalue1;" + "cookiename2=cookievalue2");
2、重写WebClient的方法维护设置cookie
public class WebClientCookie : WebClient { public WebClientCookie(CookieContainer container) { this.container = container; } public CookieContainer CookieContainer { get { return container; } set { container= value; } } // 设置自己想要添加的登陆信息等cookie public void SetCustCookie(string name,string value, string path,string domain) { CookieCollection cookies = new CookieCollection(); cookies.Add(new Cookie(name.Trim(), value.Trim(), path, domain)); container.Add(cookies); } private CookieContainer container = new CookieContainer(); protected override WebRequest GetWebRequest(Uri address) { WebRequest r = base.GetWebRequest(address); var request = r as HttpWebRequest; if (request != null) { request.CookieContainer = container; } return r; } protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result) { WebResponse response = base.GetWebResponse(request, result); ReadCookies(response); return response; } protected override WebResponse GetWebResponse(WebRequest request) { WebResponse response = base.GetWebResponse(request); ReadCookies(response); return response; } private void ReadCookies(WebResponse r) { var response = r as HttpWebResponse; if (response != null) { CookieCollection cookies = response.Cookies; container.Add(cookies); } } }
相关文档:.Net(C#) 后台使用webclient(客户端控制台程序)执行Get和Post请求的方法-CJavaPy