天天看點

silverlight向伺服器post資料類

using System;

using System.Net;

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.IO;

public class HttpClient

{

    private WebRequest webRequest = null;

    public delegate void ResponseEventHandler(String responseResult);

    public event ResponseEventHandler onResponseEventHandler;

    public delegate void RequestEventHandler();

    public event RequestEventHandler onRequestEventHandler;

    public string PostData { get; set; }

    public HttpClient(Uri clientUri)

    {

        Uri endpoint = clientUri;

        webRequest = WebRequest.Create(endpoint);

        webRequest.ContentType = "application/x-www-form-urlencoded";

        webRequest.Method = "POST";

    }

    public void Post()

        webRequest.BeginGetRequestStream(new AsyncCallback(RequestReady), webRequest);

    private void RequestReady(IAsyncResult asyncResult)

        if (this.onRequestEventHandler != null)

        {

            this.onRequestEventHandler();

        }

        WebRequest request = asyncResult.AsyncState as WebRequest;

        Stream requestStream = request.EndGetRequestStream(asyncResult);

        using (StreamWriter writer = new StreamWriter(requestStream))

            writer.Write(this.PostData);

            writer.Flush();

            writer.Close();

        webRequest.BeginGetResponse(new AsyncCallback(ResponseReady), webRequest);

    private void ResponseReady(IAsyncResult asyncResult)

        if (this.onResponseEventHandler != null)

            WebRequest request = asyncResult.AsyncState as WebRequest;

            WebResponse response = request.EndGetResponse(asyncResult);

            using (Stream responseStream = response.GetResponseStream())

            {

                String responseResult = String.Empty;

                try

                {

                    StreamReader reader = new StreamReader(responseStream);

                    responseResult = reader.ReadToEnd();

                }

                catch (WebException er)

                    responseResult = er.Message;

                catch (Exception er)

                this.onResponseEventHandler(responseResult);

            }

}

作者:nasa

聯系:[email protected]

QQ:12446006