public class PostWebClient
    {
        public delegate void WebClientCallback(Boolean error, string result);
        public WebClientCallback callback;
        public String postData = "";
        public CookieContainer cookies = null;

        public PostWebClient(WebClientCallback obj)
        {
            this.callback = new WebClientCallback(obj);
        }

        public void download(Uri address)
        {
            HttpWebRequest request;
            try
            {
                request = (HttpWebRequest)System.Net.WebRequest.Create(address);
                request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13";
                request.Headers = new WebHeaderCollection();

                if (cookies != null)
                {
                    request.CookieContainer = cookies;
                }
                if (postData != "")
                {
                    request.Method = "POST";
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.BeginGetRequestStream(new AsyncCallback(RequestReady), request);
                }
                else
                {
                    request.Method = "GET";
                    request.BeginGetResponse(new AsyncCallback(ResponseReady), request);
                }
                
            }
            catch (Exception e)
            {
                System.Windows.Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                    callback(true, "Błąd #01"+e.ToString());
                });
            }
        }

        void RequestReady(IAsyncResult asyncResult)
        {
            HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;

            using (Stream stream = request.EndGetRequestStream(asyncResult))
            {
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.Write(postData);
                    writer.Flush();
                }
            }
            request.BeginGetResponse(new AsyncCallback(ResponseReady), request);
        }

        void ResponseReady(IAsyncResult asyncResult)
        {
            HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;
            HttpWebResponse response = null;

            try
            {
                response = (HttpWebResponse)request.EndGetResponse(asyncResult);

                string result = string.Empty;
                using (Stream responseStream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(responseStream))
                    {
                        result = reader.ReadToEnd();
                    }
                }
                System.Windows.Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                    callback(false, result);
                });
            }
            catch (Exception e)
            {
                System.Windows.Deployment.Current.Dispatcher.BeginInvoke(delegate()
                {
                    callback(true, "Błąd #02 - Brak połączenia z internetem"+e.ToString());
                });
            }
        }
    }

Add a code snippet to your website: www.paste.org