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

115 lines
4.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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