zoukankan      html  css  js  c++  java
  • http post get 类库 httphelper

      public class HttpHelper
        {
    
            /// <summary>
            /// 请求超时时间
            /// </summary>
            public static int TimeOut { get; set; } = 100 * 1000;
            private static HttpWebRequest GetRequest(string url)
            {
                System.Net.HttpWebRequest request;
                if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
                {
                    ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
                    ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
                    ServicePointManager.CheckCertificateRevocationList = false;
                    ServicePointManager.DefaultConnectionLimit = 512;
                    ServicePointManager.Expect100Continue = false;
    
                    request = WebRequest.Create(url) as HttpWebRequest;
                    request.ProtocolVersion = HttpVersion.Version10;
                    request.KeepAlive = false;
                }
                else
                {
                    request = (System.Net.HttpWebRequest)WebRequest.Create(url);
                }
                request.Timeout = TimeOut;
                return request;
            }
            /// <summary>
            /// 客户端统一提交数据
            /// </summary>
            /// <param name="url">WebAPI核心URL地址</param>
            /// <param name="data">提交的数据</param>
            /// <param name="contentType">指定request.ContentType</param>
            /// <returns>返回数据</returns>
            public static GZResponseDataModel Post(string url, string data, string contentType)
            {
                System.Net.HttpWebRequest request = GetRequest(url);
                request.Method = "POST";
                request.ContentType = contentType;// "application/json;charset=UTF-8";//POST必须使用JSON格式
                if (!String.IsNullOrEmpty(data))
                {
                    string paraUrlCoded = data;
                    byte[] payload;
                    payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
                    request.ContentLength = payload.Length;
                    Stream writer = request.GetRequestStream();
                    writer.Write(payload, 0, payload.Length);
                    writer.Close();
                }
                return GetResponse(request);
            }
    
    
            private static GZResponseDataModel GetResponse(System.Net.HttpWebRequest request)
            {
                try
                {
                    using (System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse())
                    {
                        return GetResponse(response);
                    }
                }
                catch (WebException ex)
                {
                    var result = GetResponse(ex);
    
    
                    return result;
                }
                catch (Exception ex)
                {
                    GZResponseDataModel result = new GZResponseDataModel();
                    result.Success = false;
                    result.StatusCode = HttpStatusCode.BadRequest;
                    result.Message = "请求过程中发生异常:" + ex.ToString();
                    result.ExceptionStatus = WebExceptionStatus.UnknownError;
    
                    return result;
                }
            }
    
            private static GZResponseDataModel GetResponse(WebResponse response)
            {
                string responseTxt = "";
                using (System.IO.Stream s = response.GetResponseStream())
                {
                    using (StreamReader Reader = new StreamReader(s, Encoding.GetEncoding("utf-8")))
                    {
                        responseTxt = Reader.ReadToEnd();
                    }
                }
                if (response is HttpWebResponse)
                {
                    HttpStatusCode statusCode = (response as HttpWebResponse).StatusCode;
    
                    GZResponseDataModel result = new GZResponseDataModel()
                    {
                        Success = statusCode == HttpStatusCode.OK,
                        StatusCode = statusCode,
                        ResponseText = responseTxt
                    };
                    return result;
                }
                throw new Exception("response不是HttpWebResponse,没有相应的处理类型");
            }
    
    
            private static GZResponseDataModel GetResponse(WebException webException)
            {
    
                var response = webException.Response;
                if (response == null)
                {
                    GZResponseDataModel result = new GZResponseDataModel()
                    {
                        Success = false,
                        StatusCode = HttpStatusCode.BadRequest,
                        ExceptionStatus = webException.Status,
                        Message = webException.Message
                    };
    
                    return result;
    
    
                    //return;
                }
                string responseTxt = "";
                using (System.IO.Stream s = response.GetResponseStream())
                {
                    using (StreamReader Reader = new StreamReader(s, Encoding.GetEncoding("utf-8")))
                    {
                        responseTxt = Reader.ReadToEnd();
                    }
                }
                if (response is HttpWebResponse)
                {
                    HttpStatusCode statusCode = (response as HttpWebResponse).StatusCode;
    
                    GZResponseDataModel result = new GZResponseDataModel()
                    {
                        Success = statusCode == HttpStatusCode.OK,
                        StatusCode = statusCode,
                        ResponseText = responseTxt
                    };
                    return result;
                }
                throw new Exception("response不是HttpWebResponse,没有相应的处理类型");
            }
    
    
            public static GZResponseDataModel Get(string url)
            {
                System.Net.HttpWebRequest request = GetRequest(url);
                request.ContentType = "text/html";
                request.Method = "Get";
    
                return GetResponse(request);
            }
    
            public static GZResponseDataModel PostJson(string url, string data)
            {
                string contentType = "application/json;charset=UTF-8";
    
                return Post(url, data, contentType);
            }
    
            public static GZResponseDataModel PostForm(string url, string data)
            {
                string contentType = "application/x-www-form-urlencoded";
    
                return Post(url, data, contentType);
            }
    
            public static GZResponseDataModel PostForm(string url, System.Collections.Specialized.NameValueCollection PostVars)
            {
                string contentType = "application/x-www-form-urlencoded";
                List<string> data = new List<string>();
                foreach (string key in PostVars.AllKeys)
                {
                    data.Add($"{key}={PostVars[key]}");
                }
                string strVal = String.Join("&", data.ToArray());
    
                return Post(url, strVal, contentType);
            }
    
    
    
            public static void PostTestFormValue()
            {
                System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection();
                PostVars.Add("test", "value");
                PostVars.Add("cmd", "value");
                PostVars.Add("token", "value");
                PostForm("url", PostVars);
            }
    
        }
    
        public class GZResponseDataModel
        {
            public bool Success { get; set; }
            public HttpStatusCode StatusCode { get; set; }
            public WebExceptionStatus ExceptionStatus { get; set; }
    
            public string Message { get; set; }
    
            public string ResponseText { get; set; }
    
            public T ConvertObject<T>()
            {
                return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(this.ResponseText);
            }
        }
  • 相关阅读:
    使用C# 实现串口拨号器的SIM卡通信
    物联网协议Coap协议介绍
    C#实现简单的串口通信
    C#硬件访问(摄像头、麦克风)
    请问在电脑里PNP是什么意思啊?
    原码,反码,补码,及Java中数字表示方法
    3_PHP表达式_5_数据类型转换_类型强制转换
    3_PHP表达式_4_PHP运算符
    3_PHP表达式_5_数据类型转换_类型自动转换
    3_PHP表达式_3_有关变量或常量状态的函数
  • 原文地址:https://www.cnblogs.com/GarsonZhang/p/14252889.html
Copyright © 2011-2022 走看看