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; } }