httppost core net

來源:互聯網
上載者:User

標籤:compute   sync   XML   加密   content   toe   secret   資源   ted   

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

httppost core net

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.