using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace _1200gFtp
{
public class commonOptions
{
///
/// 获取福乐云HIS系统的token
///
///
///
///
public static string getHisToken(string url1,string appkey, string appsecret)
{
Dictionary dic = new Dictionary();
dic.Add("appkey", appkey);
dic.Add("appsecret", appsecret);
string resultV = commonOptions.PostFile3(url1, dic);
FlyHisTokenMsgModel tm = JsonConvert.DeserializeObject(resultV);
return tm.data.access_token;
}
///
/// 获取福乐云HIS系统的患者基本信息
///
///
///
///
public static FlyHisEcgDataModel GetHisEcgData(string url1, string Yiyuanid, string kaifangsj,string token)
{
Dictionary dic = new Dictionary();
dic.Add("Yiyuanid", Yiyuanid);
dic.Add("kaifangsj", kaifangsj);
dic.Add("token", token);
string resultV = commonOptions.PostFile3(url1, dic);
FlyHisEcgDataModel tm = JsonConvert.DeserializeObject(resultV);
return tm;
}
///
/// post form-data 参数
///
///
///
///
public static string PostFile3(string url, Dictionary items)
{
string boundary = DateTime.Now.Ticks.ToString("x");
HttpWebRequest request = null;
//如果是发送HTTPS请求
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
//处理HttpWebRequest访问https有安全证书的问题( 请求被中止: 未能创建 SSL/TLS 安全通道。)
ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10;
}
else
{
request = WebRequest.Create(url) as HttpWebRequest;
}
request.ContentType = "multipart/form-data; boundary=" + boundary;
request.Method = "POST";
// request.Headers.Add("Authorization", "Bearer " + token);
// 最后的结束符
var endBoundary = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
//文件数据
string fileFormdataTemplate =
"--" + boundary +
"\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"" +
"\r\nContent-Type: application/octet-stream" +
"\r\n\r\n";
//文本数据
string dataFormdataTemplate =
"\r\n--" + boundary +
"\r\nContent-Disposition: form-data; name=\"{0}\"" +
"\r\n\r\n{1}";
//FileInfo fi = new FileInfo(filePath);
//string fileHeader = string.Format(fileFormdataTemplate, "file", fi.Name);
//var fileBytes = Encoding.UTF8.GetBytes(fileHeader);
using (var postStream = new MemoryStream())
{
////写入文件格式串
//postStream.Write(fileBytes, 0, fileBytes.Length);
//#region 写入文件流
//using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
//{
// byte[] buffer = new byte[1024];
// int bytesRead = 0;
// while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
// {
// postStream.Write(buffer, 0, bytesRead);
// }
//}
//#endregion
#region 写入其他表单参数
foreach (KeyValuePair key in items)
{
var p = string.Format(dataFormdataTemplate, key.Key, key.Value);
var bp = Encoding.UTF8.GetBytes(p);
postStream.Write(bp, 0, bp.Length);
}
#endregion
//写入结束边界
postStream.Write(endBoundary, 0, endBoundary.Length);
#region 写入流
request.ContentLength = postStream.Length;
postStream.Position = 0;
using (Stream ds = request.GetRequestStream())
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = postStream.Read(buffer, 0, buffer.Length)) != 0)
{
ds.Write(buffer, 0, bytesRead);
}
}
#endregion
#region 获取返回值
string result = string.Empty;
using (HttpWebResponse rep = (HttpWebResponse)request.GetResponse())
{
using (Stream ds = rep.GetResponseStream())
{
using (StreamReader sr = new StreamReader(ds))
{
result = sr.ReadToEnd();
}
}
}
return result;
#endregion
}
}
//public static string PostMoths8(string url, string appkey, string appsecret)
//{
// string strURL = url;
// HttpWebRequest request;
// request = (HttpWebRequest)WebRequest.Create(strURL);
// request.Method = "POST";
// request.ContentType = "application/json;charset=UTF-8";
// string paraUrlCoded = param;
// byte[] payload;
// payload = Encoding.UTF8.GetBytes(paraUrlCoded);
// request.ContentLength = payload.Length;
// Stream writer = request.GetRequestStream();
// writer.Write(payload, 0, payload.Length);
// writer.Close();
// System.Net.HttpWebResponse response;
// response = (System.Net.HttpWebResponse)request.GetResponse();
// System.IO.Stream s;
// s = response.GetResponseStream();
// string StrDate = "";
// string strValue = "";
// StreamReader Reader = new StreamReader(s, Encoding.UTF8);
// while ((StrDate = Reader.ReadLine()) != null)
// {
// strValue += StrDate + "\r\n";
// }
// return strValue;
//}
///
/// 获取福乐云的token
///
///
///
///
public static string gettoken(string username, string pwd, string url1)
{
loginPara lp = new loginPara();
lp.username = username;
lp.password = commonOptions.Encrypt(pwd);//非对称公钥加密
string loginJson = JsonConvert.SerializeObject(lp);
string resultV = commonOptions.PostMoths(url1, loginJson);
tokenMsg tm = JsonConvert.DeserializeObject(resultV);
return tm.data;
}
// 非对称公钥加密 使用公钥加密数据
public static string Encrypt(string plainText)
{
string base64EncryptedData = string.Empty;
// 创建 RSA 密钥对
using (var rsa = new RSACryptoServiceProvider())
{
// 获取公钥
string publicKey = rsa.ToXmlString(false);
// 加载公钥
rsa.FromXmlString("gMIre8vicEqHjwhyrMUSMbwyR+STy9vGDyqmOd9xA4JI9/ghqAQAl5T9R8z87gwKMosPsEaRf4/1tg8taa/q2g0xwcZZ3dZlBzDSQ7k7I7t/Cv+m3YUZDp1U1TooSw8NzX3MQ36u1uiniWAUMvA0PT17dR6dxsQmMdDN4xSJO/0=AQAB");
// 将待加密数据转换成字节数组
byte[] dataToEncrypt = Encoding.UTF8.GetBytes(plainText);
// 使用公钥加密数据
byte[] encryptedData = rsa.Encrypt(dataToEncrypt, false);
// 将加密后的数据转换为 Base64 编码的字符串
base64EncryptedData = Convert.ToBase64String(encryptedData);
string aaa = "公钥:" + publicKey;
}
return base64EncryptedData;
//byte[] encryptedData = Encoding.UTF8.GetBytes(plainText);
//using (RSA rsa = RSA.Create())
//{
// rsa.ImportParameters(publicKey);
// // return rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1);
// return Encoding.UTF8.GetString(rsa.Encrypt(encryptedData, RSAEncryptionPadding.Pkcs1));
//}
}
//----------------------------------------------------------------------------------------------------------------------------
// 非对称公钥加密 使用公钥加密数据
public static string Encrypt(string plainText, RSAParameters publicKey)
{
byte[] encryptedData = Encoding.UTF8.GetBytes(plainText);
using (RSA rsa = RSA.Create())
{
rsa.ImportParameters(publicKey);
// return rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1);
return Encoding.UTF8.GetString(rsa.Encrypt(encryptedData, RSAEncryptionPadding.Pkcs1));
}
}
///
/// DES加密
///
/// 加密数据
/// 8位字符的密钥字符串
/// 8位字符的初始化向量字符串
///
public static string DESEncrypt(string data, string key, string iv)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
///
/// DES解密
///
/// 解密数据
/// 8位字符的密钥字符串(需要和加密时相同)
/// 8位字符的初始化向量字符串(需要和加密时相同)
///
public static string DESDecrypt(string data, string key, string iv)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
return null;
}
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}
public static string PostMoths(string url, string param)
{
string strURL = url;
HttpWebRequest request;
request = (HttpWebRequest)WebRequest.Create(strURL);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
string paraUrlCoded = param;
byte[] payload;
payload = Encoding.UTF8.GetBytes(paraUrlCoded);
request.ContentLength = payload.Length;
Stream writer = request.GetRequestStream();
writer.Write(payload, 0, payload.Length);
writer.Close();
System.Net.HttpWebResponse response;
response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream s;
s = response.GetResponseStream();
string StrDate = "";
string strValue = "";
StreamReader Reader = new StreamReader(s, Encoding.UTF8);
while ((StrDate = Reader.ReadLine()) != null)
{
strValue += StrDate + "\r\n";
}
return strValue;
}
///
///
///
///
///
///
///
public static string PostByParas(string url, string token, string jsonContent)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/json";
req.Headers.Add("Authorization", "Bearer " + token);
byte[] data = Encoding.UTF8.GetBytes(jsonContent);
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
///
/// 海军给的 http 上传文件 好用版
///
///
///
///
///
///
public static string PostFile2(string url, string filePath, Dictionary items, string token)
{
string boundary = DateTime.Now.Ticks.ToString("x");
HttpWebRequest request = null;
//如果是发送HTTPS请求
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
//处理HttpWebRequest访问https有安全证书的问题( 请求被中止: 未能创建 SSL/TLS 安全通道。)
ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10;
}
else
{
request = WebRequest.Create(url) as HttpWebRequest;
}
request.ContentType = "multipart/form-data; boundary=" + boundary;
request.Method = "POST";
request.Headers.Add("Authorization", "Bearer " + token);
// 最后的结束符
var endBoundary = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
//文件数据
string fileFormdataTemplate =
"--" + boundary +
"\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"" +
"\r\nContent-Type: application/octet-stream" +
"\r\n\r\n";
//文本数据
string dataFormdataTemplate =
"\r\n--" + boundary +
"\r\nContent-Disposition: form-data; name=\"{0}\"" +
"\r\n\r\n{1}";
FileInfo fi = new FileInfo(filePath);
string fileHeader = string.Format(fileFormdataTemplate, "file", fi.Name);
var fileBytes = Encoding.UTF8.GetBytes(fileHeader);
using (var postStream = new MemoryStream())
{
//写入文件格式串
postStream.Write(fileBytes, 0, fileBytes.Length);
#region 写入文件流
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
{
postStream.Write(buffer, 0, bytesRead);
}
}
#endregion
#region 写入其他表单参数
foreach (KeyValuePair key in items)
{
var p = string.Format(dataFormdataTemplate, key.Key, key.Value);
var bp = Encoding.UTF8.GetBytes(p);
postStream.Write(bp, 0, bp.Length);
//System.Diagnostics.Debug.WriteLine(p);
}
#endregion
//写入结束边界
postStream.Write(endBoundary, 0, endBoundary.Length);
#region 写入流
request.ContentLength = postStream.Length;
postStream.Position = 0;
using (Stream ds = request.GetRequestStream())
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = postStream.Read(buffer, 0, buffer.Length)) != 0)
{
ds.Write(buffer, 0, bytesRead);
}
}
#endregion
#region 获取返回值
string result = string.Empty;
using (HttpWebResponse rep = (HttpWebResponse)request.GetResponse())
{
using (Stream ds = rep.GetResponseStream())
{
using (StreamReader sr = new StreamReader(ds))
{
result = sr.ReadToEnd();
}
}
}
return result;
#endregion
}
}
///
/// 指定Post地址使用Get 方式获取全部字符串
///
/// 请求后台地址
///
public static string PostByParas(string url, Dictionary dic)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
#region 添加Post 参数
StringBuilder builder = new StringBuilder();
int i = 0;
foreach (var item in dic)
{
if (i > 0)
builder.Append("&");
builder.AppendFormat("{0}={1}", item.Key, item.Value);
i++;
}
byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
#endregion
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
public static string HttpGet(string url)
{
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Accept = "text/html, application/xhtml+xml, */*";
request.ContentType = "application/json";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
//public static Image CreateBarCode(string content)
//{
// using (var barcode = new Barcode()
// {
// //true显示content,false反之
// IncludeLabel = true,
// //content的位置
// Alignment = AlignmentPositions.CENTER,
// //条形码的宽高
// Width = 145,
// Height = 39,
// //类型
// RotateFlipType = RotateFlipType.RotateNoneFlipNone,
// //颜色
// BackColor = Color.White,
// ForeColor = Color.Black,
// })
// {
// return barcode.Encode(TYPE.CODE128B, content);
// }
//}
///
/// 格式化磁盘
///
/// 盘符名称:C:、D:、E:、F:
///
public static bool FormatDisk(string DiskName)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
Process process = Process.Start(processStartInfo);
if (process != null)
{
process.StandardInput.WriteLine($"FORMAT {DiskName} /y /FS:FAT32 /V:BMECG /Q");
process.StandardInput.Close();
string outputString = process.StandardOutput.ReadToEnd();
if (outputString.Contains("已完成"))
{
return true;
}
}
return false;
}
//public static void PdfToImages(string pdfFilePath, string outputFolder)
//{
// string imgpath = @"D:/PDFFF/";
// var pathList = GetPdfAllPageImgs(pdfFilePath, imgpath, "11556699");
//}
}
}