zoukankan      html  css  js  c++  java
  • .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,
        }
  • 相关阅读:
    WSDL
    对协程的理解
    调用webServer
    待看
    BZOJ4668 冷战(并查集)
    BZOJ4651 NOI2016网格(割点)
    Lyft Level 5 Challenge 2018
    BZOJ3073 PA2011Journeys(线段树+bfs)
    BZOJ4602 SDOI2016齿轮(搜索)
    BZOJ4597 SHOI2016随机序列(线段树)
  • 原文地址:https://www.cnblogs.com/sung/p/2734518.html
Copyright © 2011-2022 走看看