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