115 lines
4.4 KiB
C#
115 lines
4.4 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|