• C#请求WebApi


        public static class RequestService
        {
            public static string jwttoken = "Api验证权限需要的秘钥";
    
            /// <summary>
            /// GET请求
            /// </summary>
            /// <param name="url">请求地址</param>
            /// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param>
            /// <returns></returns>
            public static string GetHttpResponse(string url, int timeout = 60000)
            {
    
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "GET";
                request.ContentType = "text/html;charset=UTF-8";
                request.UserAgent = null;
                request.Timeout = timeout;
    
                //往头部加入自定义验证信息
                SetHeaderValue(request.Headers, "Authorization", jwttoken);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
                string retString = myStreamReader.ReadToEnd();
                myStreamReader.Close();
                myResponseStream.Close();
                return retString;
            }
    
            /// <summary>
            /// Post方法(带参数
            /// </summary>
            /// <param name="url">地址</param>
            /// <param name="postString">post数据的字符串</param>
            /// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param>
            /// <returns></returns>
            public static string PostHttpResponse(string url, IDictionary<string, string> parameters, int timeout = 60000)
            {
                HttpWebRequest request = null;
                //HTTPSQ请求
                request = WebRequest.Create(url) as HttpWebRequest;
                request.ProtocolVersion = HttpVersion.Version10;
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
                request.Timeout = timeout;
    
                //往头部加入自定义验证信息
    
                SetHeaderValue(request.Headers, "Authorization", jwttoken);
    
                //如果需要POST数据
                if (!(parameters == null || parameters.Count == 0))
                {
                    StringBuilder buffer = new StringBuilder();
                    int i = 0;
                    foreach (string key in parameters.Keys)
                    {
                        if (i > 0)
                        {
                            buffer.AppendFormat("&{0}={1}", key, parameters[key]);
                        }
                        else
                        {
                            buffer.AppendFormat("{0}={1}", key, parameters[key]);
                        }
                        i++;
                    }
                    byte[] data = Encoding.GetEncoding("utf-8").GetBytes(buffer.ToString());
                    using (Stream stream = request.GetRequestStream())
                    {
                        stream.Write(data, 0, data.Length);
                    }
                }
                var resultStream = (request.GetResponse() as HttpWebResponse);
                string result = "";
                //获取响应内容
                using (StreamReader reader = new StreamReader(resultStream.GetResponseStream(), Encoding.UTF8))
                {
                    result = reader.ReadToEnd();
                }
                return result;
            }
            /// <summary>
            /// Post方法(登录获取token)
            /// </summary>
            /// <param name="url">地址</param>
            /// <param name="postString">post数据的字符串</param>
            /// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param>
            /// <returns></returns>
            public static string LoginHttpResponse(string url, Object postData, int timeout = 60000)
            {
                HttpWebRequest request = null;
                //HTTPSQ请求
                request = WebRequest.Create(url) as HttpWebRequest;
                request.ProtocolVersion = HttpVersion.Version10;
                request.Method = "POST";
                request.ContentType = "application/json";
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
                request.Timeout = timeout;
    
                //如果需要POST数据
                string str = JsonConvert.SerializeObject(postData);
                byte[] data = Encoding.GetEncoding("utf-8").GetBytes(str);
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
    
                var resultStream = (request.GetResponse() as HttpWebResponse);
                string result = "";
                //获取响应内容
                using (StreamReader reader = new StreamReader(resultStream.GetResponseStream(), Encoding.UTF8))
                {
                    result = reader.ReadToEnd();
                }
                return result;
            }
    
            /// <summary>
            /// post方法(使用该方法请求Api时,Api中参数前需要加[FromBody])
            /// </summary>
            /// <param name="url">地址</param>
            /// <param name="PostData">post数据对象</param>
            /// <param name="timeout">超时时间,默认为60000毫秒(1分钟)</param>
            /// <returns></returns>
            public static string PostHttpResponse(string url, Object postData, int timeout = 60000)
            {
                HttpWebRequest request = null;
                //HTTPSQ请求
                request = WebRequest.Create(url) as HttpWebRequest;
                request.ProtocolVersion = HttpVersion.Version10;
                request.Method = "POST";
                request.ContentType = "application/json";
                request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
                request.Timeout = timeout;
    
                //往头部加入自定义验证信息
    
                SetHeaderValue(request.Headers, "Authorization", jwttoken);
    
                //如果需要POST数据
                string str = JsonConvert.SerializeObject(postData);
                byte[] data = Encoding.GetEncoding("utf-8").GetBytes(str);
                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }
    
                var resultStream = (request.GetResponse() as HttpWebResponse);
                string result = "";
                //获取响应内容
                using (StreamReader reader = new StreamReader(resultStream.GetResponseStream(), Encoding.UTF8))
                {
                    result = reader.ReadToEnd();
                }
                return result;
            }
    
            /// <summary>
            /// 往头部加信息
            /// </summary>
            /// <param name="header"></param>
            /// <param name="name"></param>
            /// <param name="value"></param>
            public static void SetHeaderValue(WebHeaderCollection header, string name, string value)
            {
                var property = typeof(WebHeaderCollection).GetProperty("InnerCollection", BindingFlags.Instance | BindingFlags.NonPublic);
                if (property != null)
                {
                    var collection = property.GetValue(header, null) as NameValueCollection;
                    collection[name] = value;
                }
            }
        }
  • 相关阅读:
    【Leetcode】Insertion Sort List JAVA实现
    【Leetcode】Sort List JAVA实现
    Maximum Product Subarray JAVA实现
    hadoop2.0中无法启动datanode的问题
    合并排序
    setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式
    postgresql 服务器端编程之hello word
    mac osx get postgresql path
    mac osx install mysql
    django 基于proxy实现用户权限管理
  • 原文地址:https://www.cnblogs.com/CelonY/p/16245887.html
Copyright © 2020-2023  润新知