zoukankan      html  css  js  c++  java
  • httppost core net

     public static string Post(string url, string data, Encoding encoding)
            {
                try
                {
                    HttpWebRequest req = WebRequest.CreateHttp(new Uri(url));
                    req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
                    req.Method = "POST";
                    req.Accept = "text/xml,text/javascript";
                    req.ContinueTimeout = 60000;
    
                    byte[] postData = encoding.GetBytes(data);
                    Stream reqStream = req.GetRequestStreamAsync().Result;
                    reqStream.Write(postData, 0, postData.Length);
                    reqStream.Dispose();
    
                    var rsp = (HttpWebResponse)req.GetResponseAsync().Result;
                    var result = GetResponseAsString(rsp, encoding);
                    return result;
                }
                catch (Exception ex)
                {
                    throw;
                }
            }
    
            public static T Post<T>(string url, string data, Encoding encoding)
            {
                try
                {
                    var result = Post(url, data, encoding);
                    return JsonConvert.DeserializeObject<T>(result);
                }
                catch (Exception ex)
                {
                    return default(T);
                }
            }
    
            public static string BuildQuery(IDictionary<string, string> parameters)
            {
                if (parameters == null || parameters.Count == 0)
                {
                    return null;
                }
    
                StringBuilder query = new StringBuilder();
                bool hasParam = false;
    
                foreach (KeyValuePair<string, string> kv in parameters)
                {
                    string name = kv.Key;
                    string value = kv.Value;
                    // 忽略参数名或参数值为空的参数
                    if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value))
                    {
                        if (hasParam)
                        {
                            query.Append("&");
                        }
    
                        query.Append(name);
                        query.Append("=");
                        query.Append(WebUtility.UrlEncode(value));
                        hasParam = true;
                    }
                }
    
                return query.ToString();
            }
    
            public static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
            {
                Stream stream = null;
                StreamReader reader = null;
    
                try
                {
                    // 以字符流的方式读取HTTP响应
                    stream = rsp.GetResponseStream();
                    reader = new StreamReader(stream, encoding);
                    return reader.ReadToEnd();
                }
                finally
                {
                    // 释放资源
                    if (reader != null) reader.Dispose();
                    if (stream != null) stream.Dispose();
                    if (rsp != null) rsp.Dispose();
                }
            }
    
            public static string GetAlidayuSign(IDictionary<string, string> parameters, string secret, string signMethod)
            {
                //把字典按Key的字母顺序排序
                IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parameters, StringComparer.Ordinal);
    
                //把所有参数名和参数值串在一起
                StringBuilder query = new StringBuilder();
                if (Constants.SIGN_METHOD_MD5.Equals(signMethod))
                {
                    query.Append(secret);
                }
                foreach (KeyValuePair<string, string> kv in sortedParams)
                {
                    if (!string.IsNullOrEmpty(kv.Key) && !string.IsNullOrEmpty(kv.Value))
                    {
                        query.Append(kv.Key).Append(kv.Value);
                    }
                }
    
                //使用MD5/HMAC加密
                if (Constants.SIGN_METHOD_HMAC.Equals(signMethod))
                {
                    return Hmac(query.ToString(), secret);
                }
                else
                {
                    query.Append(secret);
                    return Md5(query.ToString());
                }
            }
    
            public static string Hmac(string value, string key)
            {
                byte[] bytes;
                using (var hmac = new HMACMD5(Encoding.UTF8.GetBytes(key)))
                {
                    bytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(value));
                }
                StringBuilder result = new StringBuilder();
                foreach (byte t in bytes)
                {
                    result.Append(t.ToString("X2"));
                }
                return result.ToString();
            }
    
            public static string Md5(string value)
            {
                byte[] bytes;
                using (var md5 = MD5.Create())
                {
                    bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(value));
                }
                var result = new StringBuilder();
                foreach (byte t in bytes)
                {
                    result.Append(t.ToString("X2"));
                }
                return result.ToString();
            }
  • 相关阅读:
    JVM 基础知识
    Maven 学习
    Java 中 split() 方法
    JDK、JRE、JVM三者联系与区别
    Effective C++ 笔记 —— Item 5: Know what functions C++ silently writes and calls
    Effective C++ 笔记 —— Item 4: Make sure that objects are initialized before they’re used
    Effective C++ 笔记 —— Item 3: Use const whenever possible
    Effective C++ 笔记 —— Item 2: Prefer consts, enums, and inlines to #defines
    Idea社区版使用插件完成正常开发
    DNS配置
  • 原文地址:https://www.cnblogs.com/zxs-onestar/p/7271393.html
Copyright © 2011-2022 走看看