区块链系统之家

关注最新技术动态

.net和jiava交互的restful关键方法和关键类HttpWebRequest

 

.net和jiava交互中用的最多的是的restful模式

关键方法和关键类HttpWebRequest如下:

 

View Code
        /// <summary>
        
/// request restful web service 
        
/// </summary>
        
/// <param name="param"></param>
        
/// <returns></returns>
        public static string RequestRestHttp(RestfulParams param)
        {
            string responseString = "";
            string strurl = param.URL;
            if (param.Method == HttpMethod.GET)
                strurl = string.Format("{0}?{1}", strurl, param.Context);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strurl);
            request.Method = param.Method.ToString();
            request.Accept = GetHttpMediaType(param.ResponseMediaType);
            request.ContentType = GetHttpMediaType(param.RequestMediaType);
            request.Timeout = param.TimeOut;
            request.Headers.Add("content", GetHttpMediaType(param.RequestMediaType));
            if (param.Headers != null)
            {
                foreach (var item in param.Headers)
                {
                    if (item.Key.ToLower().Trim() != "content")
                        request.Headers.Add(item.Key, item.Value);
                }
            }
            //request.Headers.Add("appkey", "123456");

            if (param.Method != HttpMethod.GET)
            {
                byte[] byteArray = param.Encoding.GetBytes(param.Context);
                request.ContentLength = byteArray.Length;
                using (Stream postStream = request.GetRequestStream())
                {
                    postStream.Write(byteArray, 0, byteArray.Length);
                }
            }

            WebResponse response = request.GetResponse();

            if (response.Headers != null)
            {
                param.ResponseHeaders.Clear();
                foreach (var item in response.Headers.AllKeys)
                    param.ResponseHeaders.Add(item, response.Headers[item]);
            }

            using (StreamReader streamRead = new StreamReader(response.GetResponseStream()))
            {
                responseString = streamRead.ReadToEnd();
            }

            return responseString;
        }

 

HttpWebRequest的参数类:RestfulParams类如下

 

View Code
/// <summary>
    
/// rest ful param class
    
/// </summary>
    public class RestfulParams : RemoteParams
    {
        public string URL { getset; }
        public string Context { getset; }
        public Dictionary<stringstring> Headers { getset; }
        public HttpMethod Method { getset; }
        public MediaTypeEnum RequestMediaType { getset; }
        public MediaTypeEnum ResponseMediaType { getset; }
        public Encoding Encoding { getset; }
        public Dictionary<stringstring> ResponseHeaders { getset; }
        public string Querys { getset; }

        public int TimeOut { getset; }
        public RestfulParams()
        {
            RequestMediaType = MediaTypeEnum.Xml;
            ResponseMediaType = MediaTypeEnum.Xml;
            Encoding = Encoding.UTF8;
            Headers = new Dictionary<stringstring>();
            ResponseHeaders = new Dictionary<stringstring>();

            TimeOut = ConfigManager.Instance.RestfulTimeOut;    //.AppSettings["RestfulTimeOut"];
        }
    }

    /// <summary>
    
/// used method
    
/// </summary>
    public enum HttpMethod
    {
        GET,
        POST,
        PUT,
        DELETE
    }

 枚举类:

 

View Code
    public enum EncodingTypeEnum {
        
        /// <remarks/>
        Default,
        
        /// <remarks/>
        Unicode,
        
        /// <remarks/>
        UTF8,
        
        /// <remarks/>
        ASCII,
    }
View Code
    public enum MediaTypeEnum {
        
        /// <remarks/>
        Default,
        
        /// <remarks/>
        Text,
        
        /// <remarks/>
        Xml,
        
        /// <remarks/>
        Json,
    }

 

posted on 2012-10-22 20:58  新技术动态  阅读(353)  评论(0编辑  收藏  举报

导航