Report abuse


			
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Net;
using System.IO;

namespace SilverlightFrontend3.Helpers {
    public class HTTPService {
        public String Url { get; set; }
        private String method = "GET";
        private String contentType = "application/x-www-form-urlencoded";
        private String parameters = " ";

        public event HttpServiceCompleteEventHandler ServiceComplete;
        private void OnServiceComplete(HttpServiceCompleteEventArgs e) {
            if (this.ServiceComplete != null) {
                this.ServiceComplete(e);
            }
        }

        public HTTPService() {
        }

        public void send() {
            send(" ");
        }

        public void send(String parameters) {
            if (method == "GET") {
                WebClient client = new WebClient();
                client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompleted);
                client.DownloadStringAsync(new Uri(Url));
            } else {
                this.parameters = parameters;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(Url));
                request.ContentType = contentType;
                request.Method = method;
                request.BeginGetRequestStream(new AsyncCallback(RequestReady), request);
                request.BeginGetResponse(new AsyncCallback(ResponseReady), request);
            }
        }

        void RequestReady(IAsyncResult asyncResult) {
            WebRequest request = asyncResult.AsyncState as WebRequest;
            Stream requestStream = request.EndGetRequestStream(asyncResult);
            StreamWriter writer = new StreamWriter(requestStream);
            writer.Write(parameters);
            writer.Flush();
        }

        void ResponseReady(IAsyncResult asyncResult) {
            WebRequest request = asyncResult.AsyncState as WebRequest;
            using (WebResponse response = request.EndGetResponse(asyncResult))
            using (Stream responseStream = response.GetResponseStream()) {
                StreamReader reader = new StreamReader(responseStream);
                OnServiceComplete(new HttpServiceCompleteEventArgs(reader.ReadToEnd()));
            }
        }

        void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) {
            OnServiceComplete(new HttpServiceCompleteEventArgs(e.Result));
        }

        public string ContentType {
            get { return contentType; }
            set { contentType = value; }
        }

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

    public delegate void HttpServiceCompleteEventHandler(HttpServiceCompleteEventArgs e);
    public class HttpServiceCompleteEventArgs : EventArgs {
        public string Response { get; set; }

        public HttpServiceCompleteEventArgs(string response) {
            this.Response = response;
        }
    }
}