制作一个简易的RestClient类

public class RestClient
    {
        private HttpWebRequest CreateHttpRequest(string url, string method)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            this.SetProxy(request);
            request.Headers.Set("Cache-Control", "No-Cache");
            request.Method = method;
            request.ContentType = "application/json";
            return request;
        }

        public virtual T Post<T>(string url, object requestContact) where T : class
        {
            T local;
            HttpWebRequest request = this.CreateHttpRequest(url, "Post");
            if (requestContact != null)
            {
                using (Stream stream = request.GetRequestStream())
                {
                    new DataContractJsonSerializer(requestContact.GetType()).WriteObject(stream, requestContact);
                }
            }
            using (WebResponse response = request.GetResponse())
            {
                using (Stream stream2 = response.GetResponseStream())
                {
                    local = new DataContractJsonSerializer(typeof(T)).ReadObject(stream2) as T;
                }
            }
            return local;
        }

        public T Get<T>(string url, object requestContact) where T : class
        {
            T local;
            HttpWebRequest request = this.CreateHttpRequest(url, "GET");
            if (requestContact != null)
            {
                using (Stream stream = request.GetRequestStream())
                {
                    new DataContractJsonSerializer(requestContact.GetType()).WriteObject(stream, requestContact);
                }
            }
            using (WebResponse response = request.GetResponse())
            {
                using (Stream stream2 = response.GetResponseStream())
                {
                    local = new DataContractJsonSerializer(typeof(T)).ReadObject(stream2) as T;
                }
            }
            return local;
        }

        private void SetProxy(HttpWebRequest request)
        {
            WebProxy proxy2 = new WebProxy
            {
                Credentials = CredentialCache.DefaultCredentials
            };
            WebProxy proxy = proxy2;
            request.Proxy = proxy;
        }
    }

 

posted @ 2011-12-23 16:07  darjuan  阅读(293)  评论(0编辑  收藏  举报