using HL_FristAidPlatform_Public; using Newtonsoft.Json; using System; using System.IO; using System.Net; using System.Text; namespace HL_FristAidPlatform_ChestPain_Interface_CCPC { /// /// HTTP 访问类 /// public class HttpClient { /// /// 访问胸痛中心云平台接口 提交数据 /// /// 胸痛中心数据填报平台webapi地址 /// 当前医院申请的AppID /// 当前医院申请的SecretKey /// 传输实体 /// 数据填报平台的唯一主键 /// public RetutnModel PostData(string _webApiUrl, string _appId, string _secretKey, CCPCModel _ccpcModel, out string _register_ID) { RetutnModel retutnModel = new RetutnModel(); _register_ID = string.Empty; string url = _webApiUrl; string appId = _appId; string secretKey = _secretKey; string requestId = Guid.NewGuid().ToString(); string time = DateTime.Now.ToString("yyyyMMddHHmmss"); //make signture plain text var signPlain = new StringBuilder(); signPlain.Append(time); signPlain.Append(requestId); //make sign var sign = Encryption.HmacSHA256(secretKey, signPlain.ToString().ToUpper()); Console.WriteLine("sign:{0}", sign); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json"; //add headers request.Headers.Add("time", time); request.Headers.Add("appId", appId); request.Headers.Add("requestId", requestId); request.Headers.Add("sign", sign); //add body var postDataString = JsonConvert.SerializeObject(_ccpcModel); var dataToPost = Encoding.UTF8.GetBytes(postDataString); request.ContentLength = dataToPost.Length; using (var requestStream = request.GetRequestStream()) { requestStream.Write(dataToPost, 0, dataToPost.Length); } //start request try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { var responseStream = response.GetResponseStream(); if (responseStream != null) { using (StreamReader reader = new StreamReader(responseStream)) { var content = reader.ReadToEnd(); retutnModel = JsonConvert.DeserializeObject(content); //成功 if (retutnModel.ResultCode == "200") { foreach (var item in retutnModel.Data) { if (item.Key.ToUpper() == "REGISTER_ID") { _register_ID = item.Value; break; } } } } } } } catch (WebException ex) { PublicClass.WriteErrorLog("PostData", "胸痛数据填报平台接口返回报错:\r\n请求地址:" + url + "\r\nHeaders:\r\n" + request.Headers + "\r\n请求参数:\r\n" + postDataString + "\r\n错误详细情况:\r\n" + ex); using (HttpWebResponse response = (HttpWebResponse)ex.Response) { var responseStream = response.GetResponseStream(); if (responseStream != null) { using (StreamReader reader = new StreamReader(responseStream)) { var content = reader.ReadToEnd(); Console.WriteLine(content); } } } } return retutnModel; } } }