It is possible to use the WebClient with cookie management.

public class WebClientExtended : WebClient
{
        private CookieContainer myContainer;
        private HttpWebRequest myRequest;
        private string myMethod;

        public string Method
        {
                get { return myMethod; }
                set { myMethod = value; }
        }

        public CookieContainer Cookies
        {
                get
                {
                        if (myContainer == null)
                        {
                                myContainer = new CookieContainer();
                        }
                        return myContainer;
                }
                set
                {
                        myContainer = value;
                }
        }

        protected override WebRequest GetWebRequest(Uri address)
        {
                myRequest = (HttpWebRequest)base.GetWebRequest(address);
                myRequest.Method = this.Method;
                myRequest.CookieContainer = Cookies;
                return myRequest;
        }

        protected override WebResponse GetWebResponse(WebRequest request)
        {
                return myRequest.GetResponse();
        }

        protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result)
        {
                return myRequest.EndGetResponse(result);
        }