StableVersion4.3/HL_FristAidPlatform_ChestPa.../HttpClient/HttpClient.cs

115 lines
4.4 KiB
C#
Raw Normal View History

2024-03-11 09:47:34 +08:00
using HL_FristAidPlatform_Public;
using Newtonsoft.Json;
using System;
using System.IO;
using System.Net;
using System.Text;
namespace HL_FristAidPlatform_ChestPain_Interface_CCPC
{
/// <summary>
/// HTTP 访问类
/// </summary>
public class HttpClient
{
/// <summary>
/// 访问胸痛中心云平台接口 提交数据
/// </summary>
/// <param name="_webApiUrl">胸痛中心数据填报平台webapi地址</param>
/// <param name="_appId">当前医院申请的AppID</param>
/// <param name="_secretKey">当前医院申请的SecretKey</param>
/// <param name="_ccpcModel">传输实体</param>
/// <param name="_register_ID">数据填报平台的唯一主键</param>
/// <returns></returns>
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<RetutnModel>(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;
}
}
}