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