/// <summary> /// 发送消息到 aliMQ /// </summary> /// <param name="msgBody">msg</param> /// <param name="tag">tag</param> /// <param name="key">key</param> /// <returns>是否成功</returns> private bool SendMessageToAliMQ(string msgBody, string tag, string key) { long time = GetCurrentTimeMillis(); string signString = TopicID + NEWLINE + ProducerID + NEWLINE + GetMd5HashStr(msgBody) + NEWLINE + time; string sign = SignString(signString, Ons_SecretKey); Dictionary <string, string> headers = new Dictionary <string, string>(); headers.Add("Signature", sign); headers.Add("AccessKey", Ons_AccessKey); headers.Add("ProducerID", ProducerID); Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("topic", TopicID); parameters.Add("time", time.ToString()); parameters.Add("tag", tag); parameters.Add("key", key); try { HttpWebResponseEx res = WebHttpHepper.SendRequest(Url, "POST", headers, parameters, msgBody); if (res.StatusCode == HttpStatusCode.Created) { Console.WriteLine("Send Message Success:" + res.RetureValue); return(true); } } catch (Exception) { Console.WriteLine("Send Message Fair:" + msgBody); } return(false); }
/// <summary> /// 传入URL返回网页的html代码带有证书的方法 /// </summary> /// <param name="url">URL</param> /// <returns></returns> public static HttpWebResponseEx SendRequest(string url, string method, Dictionary <string, string> headers = null, Dictionary <string, string> parameters = null, string postData = null) { StringBuilder urlBuilder = new StringBuilder(url); urlBuilder.Append(ConcatQueryString(parameters)); url = urlBuilder.ToString(); HttpWebRequest request = null; if (url.Contains("https")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); request = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); } else { request = (HttpWebRequest)WebRequest.Create(url); } // 与指定URL创建HTTP请求 request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN)"; request.Method = method; request.Accept = "*/*"; //headers foreach (var header in headers) { request.Headers.Add(header.Key, header.Value); } if (method.ToUpper() == "POST") { byte[] data = Encoding.UTF8.GetBytes(postData); request.ContentType = "text/plain;charset=UTF-8"; request.ContentLength = data.Length; using (Stream steam = request.GetRequestStream()) { steam.Write(data, 0, data.Length); } } // 获取对应HTTP请求的响应 HttpWebResponseEx res = new HttpWebResponseEx(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); res.StatusCode = response.StatusCode; // 对接响应流(以"UTF8"字符集) using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { res.RetureValue = reader.ReadToEnd(); } return(res); }