C# 时间戳、获取客户IP、MD5加密、Get与Post请求等工具方法

1.DateTime 转为Unix的long的时间戳

long orderTime = order.AddTime.ToUnixTimeStamp("Milliseconds");
long payTime = order.StartTime.Value.ToUnixTimeStamp("Milliseconds");

2.获取客户端IP

/// <summary>
       /// 获取调用方的IP地址
       /// </summary>
       /// <param name="request"></param>
       /// <returns></returns>
        public static string GetClientIp(HttpRequestMessage request)
        {
            if (request.Properties.ContainsKey("MS_HttpContext"))
            {
                return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
            }

            if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
            {
                RemoteEndpointMessageProperty prop;
                prop = (RemoteEndpointMessageProperty)request.Properties[RemoteEndpointMessageProperty.Name];
                return prop.Address;
            }
            return null;
        }

3.获取当前站点域名

   /// <summary>
       /// 获取当前站点域名
       /// </summary>
       /// <returns></returns>
        public static string GetCurrentDomain()
        {
            var url = HttpContext.Current.Request.Url;
            return string.Format("{0}://{1}:{2}", url.Scheme, url.Host, url.Port);
        }

4.Md5加密

/// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="strInput">加密前的字符串</param>
        /// <returns></returns>
        public static string MD5(string strInput)
        {
            using (MD5 md5 = new MD5CryptoServiceProvider())
            {
                byte[] bytResult = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strInput));
                string strResult = BitConverter.ToString(bytResult);
                strResult = strResult.Replace("-", "");
                return strResult.ToLower();
            }
        }

5.UrlEncode和UrlDecode

/// <summary>
        /// UrlEncode
        /// </summary>
        /// <param name="strInput">Encode前的字符串</param>
        /// <returns></returns>
        public static string UrlEncode(string strInput)
        {
           return System.Web.HttpUtility.UrlEncode(strInput, Encoding.UTF8);
        }

        /// <summary>
        /// UrlDecode
        /// </summary>
        /// <param name="strInput">Decode前的字符串</param>
        /// <returns></returns>
        public static string UrlDecode(string strInput)
        {
            return System.Web.HttpUtility.UrlDecode(strInput, Encoding.UTF8);
        }

6.输入字符是否为分隔符

/// <summary>
        /// 输入字符是否为分隔符
        /// </summary>
        /// <param name="strInput">输入字符</param>
        /// <param name="separator">分隔符</param>
        /// <returns></returns>
        public static bool IsNullOrSeparator(string strInput)
        {
            if (string.IsNullOrEmpty(strInput))
            {
                return true;
            }

            Regex regex = new Regex(@"^[\,,。. ';;()()[]\{}!!@#$%^…&*-_+=|~《》<>??/、::“`]+$");

            return regex.IsMatch(strInput); 
        }

7.async HttpGet:

   public static async Task<string> HttpGet(string Url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";

            using (var response =await request.GetResponseAsync())
            {
                Stream myResponseStream = response.GetResponseStream();
                StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
                string retString = myStreamReader.ReadToEnd();
                return retString;
            }
        }

8.async HttpPost 参数json格式:

 public static async Task<string> HttpPostAsync(string url, string postData)
        {
            try
            {
                byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "application/json";
                request.ContentLength = byteArray.Length;
                using (Stream myRequestStream = await request.GetRequestStreamAsync())
                {
                    myRequestStream.Write(byteArray, 0, byteArray.Length);
                    WebResponse response = request.GetResponse();
                    StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
                    return myStreamReader.ReadToEnd();
                }
            }
            catch (Exception ex)
            {
                Logger.Info(ex);
                return string.Empty;
            }
           
        }

9.async HttpPost 键值对方式:

 public static async Task<string> HttpPostAsync(string url, Dictionary<string,string> paramList)
        {
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                StringBuilder sb = new StringBuilder();
                foreach (var item in paramList)
                {
                    sb.Append(item.Key + "=" + item.Value + "&");
                }
                string paramData = sb.ToString().Trim('&');
                byte[] data = System.Text.Encoding.UTF8.GetBytes(paramData);
                request.Method = "post";
                //这句不能少  不难post请求 得不到对应的响应结果
                request.ContentType = "application/x-www-form-urlencoded";
                using (Stream myRequestStream = await request.GetRequestStreamAsync())
                {
                    myRequestStream.Write(data, 0, data.Length);
                    WebResponse response = request.GetResponse();
                    StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
                    return myStreamReader.ReadToEnd();
                }
            }
            catch (Exception ex)
            {
                Logger.Info(ex);
                return string.Empty;
            }

        }
原文地址:https://www.cnblogs.com/zoro-zero/p/5531747.html