zoukankan      html  css  js  c++  java
  • C# http请求工具类

    /// <summary>
        /// Http请求操作类之HttpWebRequest
        /// </summary>
        public class HttpHelper
        {
            #region properties
    
            private ILog _logger;
            private readonly Encoding ENCODING = Encoding.UTF8;
            #endregion
    
            #region constructor
            public HttpHelper()
            {
                this._logger = LogManager.GetLogger("HttpHelper");
            }
            #endregion
    
            #region public methods
    
            /// <summary>
            /// Post
            /// </summary>
            /// <param name="url"></param>
            /// <param name="msg"></param>
            /// <returns></returns>
            public string HTTPJsonPost(string url, string msg)
            {
                string result = string.Empty;
                try
                {
                    this._logger.InfoFormat("HTTPJsonPostUrl:{0}", url);
                    this._logger.InfoFormat("HTTPJsonPostMsg:{0}", msg);
                    result = CommonHttpRequest(msg, url, "POST");
                    //if (!result.Contains(""Code":200"))
                    //{
                    //    throw new Exception(result);
                    //}
                }
                catch (WebException ex)
                {
                    if (ex.Response != null)
                    {
                        HttpWebResponse response = (HttpWebResponse)ex.Response;
                        Console.WriteLine("Error code: {0}", response.StatusCode);
                        switch (response.StatusCode)
                        {
                            case HttpStatusCode.BadRequest:
                            case HttpStatusCode.Forbidden:
                            case HttpStatusCode.InternalServerError:
                                {
                                    using (Stream data = response.GetResponseStream())
                                    {
                                        using (StreamReader reader = new StreamReader(data))
                                        {
                                            string text = reader.ReadToEnd();
                                            throw new Exception(text);
                                        }
                                    }
                                }
                                break;
                        }
    
                    }
                    this._logger.ErrorFormat("HTTPJsonPost异常:{0}", ex.Message);
                }
                catch (Exception ex)
                {
                    this._logger.ErrorFormat("HTTPJsonPost异常:{0}", ex.Message);
                    throw new Exception(ex.Message);
    
                }
                return result;
            }
    
            /// <summary>
            /// Get
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            public string HTTPJsonGet(string url)
            {
                string result = string.Empty;
                try
                {
                    this._logger.InfoFormat("HTTPJsonPostUrl:{0}", url);
                    HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                    request.ContentType = "application/json";
                    request.Method = "GET";
                    HttpWebResponse resp = request.GetResponse() as HttpWebResponse;
                    System.IO.StreamReader reader = new System.IO.StreamReader(resp.GetResponseStream(), this.ENCODING);
                    result = reader.ReadToEnd();
                }
                catch (Exception ex)
                {
                    this._logger.ErrorFormat("HTTPJsonGet异常:{0}", ex.Message);
                }
                return result;
            }
    
            /// <summary>
            /// Put
            /// </summary>
            /// <param name="data"></param>
            /// <param name="uri"></param>
            /// <returns></returns>
            public string HTTPJsonDelete(string url, string data)
            {
                return CommonHttpRequest(data, url, "DELETE");
            }
    
            /// <summary>
            /// Put
            /// </summary>
            /// <param name="data"></param>
            /// <param name="uri"></param>
            /// <returns></returns>
            public string HTTPJsonPut(string url, string data)
            {
                return CommonHttpRequest(data, url, "PUT");
            }
    
    
            #endregion
    
    
    
            #region private
    
            public string CommonHttpRequest(string data, string uri, string type)
            {
    
                //Web访问对象,构造请求的url地址
                string serviceUrl = uri;
    
                //构造http请求的对象
                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
                myRequest.Timeout = 600000;
                //转成网络流
                byte[] buf = this.ENCODING.GetBytes(data);
                //设置
                myRequest.Method = type;
                myRequest.ContentLength = buf.LongLength;
                myRequest.ContentType = "application/json";
    
                //将客户端IP加到头文件中
                string sRealIp = GetHostAddress();
                if (!string.IsNullOrEmpty(sRealIp))
                {
                    myRequest.Headers.Add("ClientIp", sRealIp);
                }
    
                using (Stream reqstream = myRequest.GetRequestStream())
                {
                    reqstream.Write(buf, 0, (int)buf.Length);
                }
                HttpWebResponse resp = myRequest.GetResponse() as HttpWebResponse;
                System.IO.StreamReader reader = new System.IO.StreamReader(resp.GetResponseStream(), this.ENCODING);
                string ReturnXml = reader.ReadToEnd();
                reader.Close();
                resp.Close();
                return ReturnXml;
            }
            #endregion
    
    
            /// <summary>
            /// 获取客户端IP地址(无视代理)
            /// </summary>
            /// <returns>若失败则返回回送地址</returns>
            public static string GetHostAddress()
            {
                try
                {
                    string userHostAddress = HttpContext.Current.Request.UserHostAddress;
    
                    if (string.IsNullOrEmpty(userHostAddress))
                    {
                        userHostAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                    }
    
                    //最后判断获取是否成功,并检查IP地址的格式(检查其格式非常重要)
                    if (!string.IsNullOrEmpty(userHostAddress) && IsIP(userHostAddress))
                    {
                        return userHostAddress;
                    }
                    return "127.0.0.1";
                }
                catch
                {
                    return "127.0.0.1";
                }
    
            }
    
            /// <summary>
            /// 检查IP地址格式
            /// </summary>
            /// <param name="ip"></param>
            /// <returns></returns>
            public static bool IsIP(string ip)
            {
                return System.Text.RegularExpressions.Regex.IsMatch(ip, @"^((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)$");
            }
    
            public static long ConvertDataTimeLong(DateTime dt)
            {
                DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
                TimeSpan toNow = dt.Subtract(dtStart);
                long timeStamp = toNow.Ticks;
                timeStamp = long.Parse(timeStamp.ToString().Substring(0, timeStamp.ToString().Length - 4));
                return timeStamp;
            }
    
            public static DateTime ConvertLongDateTime(long d)
            {
                DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
                long lTime = long.Parse(d + "0000");
                TimeSpan toNow = new TimeSpan(lTime);
                DateTime dtResult = dtStart.Add(toNow);
                return dtResult;
            }
    
       private string ConvertToJsonString<T>(T model)
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                var stream = new MemoryStream();
                serializer.WriteObject(stream, model);
    
                byte[] dataBytes = new byte[stream.Length];
    
                stream.Position = 0;
    
                stream.Read(dataBytes, 0, (int)stream.Length);
    
                string dataString = Encoding.UTF8.GetString(dataBytes);
                return dataString;
            }
        }
    
         /// <summary>
        /// Http请求操作类之WebClient
        /// </summary>
    
         public static class WebClientHelper
        {
            public static string Post(string url, string jsonData)
            {
                var client = new WebClient();
                client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
                client.Encoding = System.Text.Encoding.UTF8;
                byte[] data = Encoding.UTF8.GetBytes(jsonData);
                byte[] responseData = client.UploadData(new Uri(url), "POST", data);
                string response = Encoding.UTF8.GetString(responseData);
                return response;
            }
    
            public static void PostAsync(string url, string jsonData, Action<string> onComplete, Action<Exception> onError)
            {
                var client = new WebClient();
                client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
                client.Encoding = System.Text.Encoding.UTF8;
                byte[] data = Encoding.UTF8.GetBytes(jsonData);
    
                client.UploadDataCompleted += (s, e) =>
                {
                    if (e.Error == null && e.Result != null)
                    {
                        string response = Encoding.UTF8.GetString(e.Result);
                        onComplete(response);
                    }
                    else
                    {
                        onError(e.Error);
                    }
                };
    
                client.UploadDataAsync(new Uri(url), "POST", data);
            }
        }
    
     
    
     
    
    http请求工具类
    

      

  • 相关阅读:
    LeetCode 42. Trapping Rain Water
    LeetCode 209. Minimum Size Subarray Sum
    LeetCode 50. Pow(x, n)
    LeetCode 80. Remove Duplicates from Sorted Array II
    Window10 激活
    Premiere 关键帧缩放
    AE 「酷酷的藤」特效字幕制作方法
    51Talk第一天 培训系列1
    Premiere 视频转场
    Premiere 暴徒生活Thug Life
  • 原文地址:https://www.cnblogs.com/dinggf/p/11863566.html
Copyright © 2011-2022 走看看