private DataSet JsonToDataset(string json)
{
string newJson = "{\"root\":" + json + "}";
//将JSON转成XML
XmlDocument doc = JsonConvert.DeserializeXmlNode(newJson, "root");
//将XML转成DataSet
StringReader sr = new StringReader(doc.InnerXml);
DataSet ds = new DataSet();
ds.ReadXml(sr);
return ds;
}
/// <summary>
/// /在这里请求该人员的历史理赔记录接口Historical Claim Record
/// </summary>
/// <param name="requestData"></param>
private void GetHistoricalClaimRecordFromMX_ELR(string requestData = "")
{
System.DateTime startTime = System.TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
//时间戳毫秒值,例:1599553199018
long currenttimemillis = (long)(DateTime.Now - startTime).TotalMilliseconds;
string timestamp = currenttimemillis.ToString();
//签名 加密sign 字段 签名方式 :时间戳 + 秘钥的md5值 Sign = Md5(timestamp + key)
string sign = timestamp + token;
string signature = HttpOther.Md5Encrypt(sign);
//signature = signature.ToUpper();
string url = send_url_history + "?timestamp=" + timestamp + "&sign=" + signature;//生成镁信要求代签名字符串
string strJsonData = requestData.ToString();
//回传
string Recontent = HttpPost(url, strJsonData);//返回内容
//开始解析 将jasn转换成DataSet
DataSet dsJson = JsonToDataset(Recontent);
//响应参数
JObject reJsonData = JObject.Parse(Recontent);
string reMsg = "";
LogInfo loginfo = new LogInfo();
string resultCode = reJsonData["code"].ToString();//200000-成功 其他-失败
string resultMsg = reJsonData["message"].ToString();//错误消息
string result = reJsonData["result"].ToString();//返回结果
}
发送
public static string HttpPost(string posturl, string postData)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = System.Text.Encoding.GetEncoding("utf-8");
byte[] data = encoding.GetBytes(postData);
// 准备请求...
try
{
// 设置参数
CookieContainer cookieContainer = new CookieContainer();
// request.ServerCertificateValidationCallback = delegate { return true; };
//解决,https 基础链接关闭。
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
request = WebRequest.Create(posturl) as HttpWebRequest;
// request.Connection = "keep-alive";
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = data.Length;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回结果网页(html)代码
string content = sr.ReadToEnd();
string err = string.Empty;
return content;
}
catch (Exception ex)
{
string err = ex.Message;
return err;
}
}
/// <summary>
/// 拷贝文件夹
///By Wang Hw www.pegete.com.cn
/// </summary>
/// <param name="srcdir"></param>
/// <param name="desdir"></param>
private void CopyDirectory(string srcdir, string desdir)
{
string folderName = srcdir.Substring(srcdir.LastIndexOf("\\") + 1);
string desfolderdir = desdir + "\\" + folderName;
if (desdir.LastIndexOf("\\") == (desdir.Length - 1))
{
desfolderdir = desdir + folderName;
}
string[] filenames = Directory.GetFileSystemEntries(srcdir);
foreach (string file in filenames)// 遍历所有的文件和目录
{
if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
{
string currentdir = desfolderdir + "\\" + file.Substring(file.LastIndexOf("\\") + 1);
if (!Directory.Exists(currentdir))
{
Directory.CreateDirectory(currentdir);
}
CopyDirectory(file, desfolderdir);
}
else // 否则直接copy文件
{
string srcfileName = file.Substring(file.LastIndexOf("\\") + 1);
if (srcfileName.ToLower().Contains(".jpg"))
{
srcfileName = desfolderdir + "\\" + srcfileName;
using (FileStream fileName = new FileStream(file, FileMode.Open))
{
string name = Path.GetFileName(file);
Double ii = getImageSize(file);
if (ii >= 0.5 && ii < 1)
{
var img = CompressionImage(fileName, 50L);//压缩图像 by readingzb 2019-04-04
if (!Directory.Exists(desfolderdir))
{
Directory.CreateDirectory(desfolderdir);
}
CreateImageFromBytes(desfolderdir + @"\" + name, img);
Thread.Sleep(500);
}
if (ii >= 1)
{
var img = CompressionImage(fileName, 40L);//压缩图像 by readingzb 2019-04-04
if (!Directory.Exists(desfolderdir))
{
Directory.CreateDirectory(desfolderdir);
}
CreateImageFromBytes(desfolderdir + @"\" + name, img);
Thread.Sleep(1000);
}
if (ii > 0 && ii < 0.5)
{
if (!Directory.Exists(desfolderdir))
{
Directory.CreateDirectory(desfolderdir);
}
File.Copy(file, srcfileName, true);
}
}
}
else if (srcfileName.ToLower().Contains(".pdf")
|| srcfileName.ToLower().Contains(".tif")
|| srcfileName.ToLower().Contains(".tiff")
|| srcfileName.ToLower().Contains(".gif")
|| srcfileName.ToLower().Contains(".bmp")
|| srcfileName.ToLower().Contains(".jpeg")
|| srcfileName.ToLower().Contains(".png"))
{
if (!Directory.Exists(desfolderdir))
{
Directory.CreateDirectory(desfolderdir);
}
srcfileName = desfolderdir + "\\" + srcfileName;
File.Copy(file, srcfileName, true);
}
}
}
}
//url 下载的路径
//FileName 保存的文件名
public static void DownLoadFile(String url, String FileName)
{
try
{
FileStream outputStream = new FileStream(Application.StartupPath + @"\" + FileName, FileMode.Create);
WebRequest request = WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream httpStream = response.GetResponseStream();
long cl = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = httpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = httpStream.Read(buffer, 0, bufferSize);
}
httpStream.Close();
outputStream.Close();
response.Close();
}
catch (Exception ex)
{
MessageBox.Show("文件下载失败错误为" + ex.Message.ToString(), "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
/// <summary>
///功能 : 根据参数生成编码号,支持事务
///参数 : string tableName, string fieldName, SqlTransaction tran
///返回值: 生成的编码
/// </summary>
public static string getNumberByTableAndField(string tableName, string fieldName)
{
SqlConnection _con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = _con;
cmd.CommandText = "WD_getMB";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@tableName", SqlDbType.VarChar, 100);
param.Direction = ParameterDirection.Input;
param.Value = tableName;
cmd.Parameters.Add(param);
param = new SqlParameter("@fieldName", SqlDbType.VarChar, 100);
param.Direction = ParameterDirection.Input;
param.Value = fieldName;
cmd.Parameters.Add(param);
param = new SqlParameter("@MB", SqlDbType.VarChar, 100);
param.Direction = ParameterDirection.Output;
//param.Value = tableName;
cmd.Parameters.Add(param);
try
{
_con.Open();
cmd.ExecuteNonQuery();
string numberStr = cmd.Parameters["@MB"].Value.ToString();
if (numberStr.IndexOf("error.") == 0)
throw new Exception(numberStr.Substring(6));
return numberStr;
}
catch (Exception err)
{
throw (err);
}
finally
{
_con.Close();
_con = null;
}
}
public void Add_BPO_Document(BPO_ImageZip_MX Model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into BPO_Document(");
strSql.Append("ImageZipID,DocumentID,DCNType,RuleDefineID)");
strSql.Append(" values (");
strSql.Append("@ImageZipID,@DocumentID,@DCNType,@RuleDefineID)");
SqlParameter[] parameters = {
new SqlParameter("@ImageZipID", SqlDbType.VarChar,20),
new SqlParameter("@DocumentID", SqlDbType.VarChar,50),
new SqlParameter("@DCNType", SqlDbType.VarChar,50),
new SqlParameter("@RuleDefineID", SqlDbType.VarChar,50)
};
string DocumentID = DbHelperSQL.getNumberByTableAndField("BPO_Document", "DocumentID");
parameters[0].Value = Model.ImageZipID;
parameters[1].Value = DocumentID;
parameters[2].Value = "2";
parameters[3].Value = "0000001107";
DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
}
USE [BPO_QHSH_CXZF_SH]
GO
/****** Object: StoredProcedure [dbo].[WD_getMB] Script Date: 2023/7/3 13:15:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description: 为任意一个表生成编号
-- =============================================
ALTER PROCEDURE [dbo].[WD_getMB]
-- Add the parameters for the stored procedure here
@tableName varchar(100), --表名
@fieldName varchar(100), --字段名
@MB varchar(100) OUTPUT ---生成的编码
AS
BEGIN
DECLARE @BMGSStr varchar(200) --编码公式
DECLARE @BGPOS INT --取编码编号的开始位置
DECLARE @CHARNUM INT --要取的编码的位数
DECLARE @STR varchar(10) --存放公式编号
DECLARE @SubMB varchar(50) --存放生成的子编码
if (@tableName is null) or (RTRIM(LTRIM(@tableName))='')
begin
set @MB='error.传入的参数表名为空或空串'---传入的参数表名为空或空串
return
end
if (@fieldName is null) or (RTRIM(LTRIM(@fieldName))='')
begin
set @MB='error.传入的参数字段名为空或空串'---传入的参数字段名为空或空串
return
end
select @BMGSStr=BMGS from T_BMB where WLBM=RTRIM(LTRIM(@tableName)) and WLZDM=RTRIM(LTRIM(@fieldName))
if (@BMGSStr is null)
begin
set @MB='error.没有编码公式'--没有编码公式
return
end
set @BMGSStr=RTRIM(LTRIM(@BMGSStr))
if (@BMGSStr='')
begin
set @MB='error.没有编码公式'--没有编码公式
return
end
set @MB=''
set @BGPOS=1
BEGIN TRANSACTION
while(1=1)
begin
set @CHARNUM=CHARINDEX('+',@BMGSStr,@BGPOS)-@BGPOS
if @CHARNUM<=0
begin
set @CHARNUM=LEN(@BMGSStr)-@BGPOS+1
set @STR=RTRIM(LTRIM(SUBSTRING(@BMGSStr,@BGPOS,@CHARNUM)))
if @STR=''
begin
set @MB='error.编码公式不正确' --编码公式不正确
ROLLBACK TRANSACTION
return
end
else
begin
EXEC getSubMB @STR,@SubMB OUTPUT
if CHARINDEX('error.',@SubMB)>0
begin
set @MB=@SubMB
ROLLBACK TRANSACTION
return
end
set @MB=@MB+@SubMB `在这里插入代码片`
COMMIT TRANSACTION
break
end
end
set @STR=RTRIM(LTRIM(SUBSTRING(@BMGSStr,@BGPOS,@CHARNUM)))
if @STR=''
begin
set @MB='error.编码公式不正确' --编码公式不正确
ROLLBACK TRANSACTION
return
end
EXEC getSubMB @STR,@SubMB OUTPUT
if CHARINDEX('error.',@SubMB)>0
begin
set @MB=@SubMB
ROLLBACK TRANSACTION
return
end
set @MB=@MB+@SubMB
set @BGPOS=@BGPOS+@CHARNUM+1
end
END
public static string HttpPost(string posturl, string postData)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = System.Text.Encoding.GetEncoding("utf-8");
byte[] data = encoding.GetBytes(postData);
// 准备请求...
try
{
// 设置参数
CookieContainer cookieContainer = new CookieContainer();
// request.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
request = WebRequest.Create(posturl) as HttpWebRequest;
// request.Connection = "keep-alive";
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = data.Length;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回结果网页(html)代码
string content = sr.ReadToEnd();
string err = string.Empty;
return content;
}
catch (Exception ex)
{
string err = ex.Message;
return err;
}
}
/// <summary>
/// 对字符串md5加密
/// </summary>
/// <param name="source">源字符串</param>
/// <param name="encoding">编码类型</param>
/// <returns>加密后的十六进制字符串</returns>
public static string Md5Encrypt(string source, Encoding encoding = null)
{
if (encoding == null) encoding = Encoding.UTF8;
byte[] byteArray = encoding.GetBytes(source);
using (HashAlgorithm hashAlgorithm = new MD5CryptoServiceProvider())
{
byteArray = hashAlgorithm.ComputeHash(byteArray);
StringBuilder stringBuilder = new StringBuilder();
foreach (byte item in byteArray)
{
stringBuilder.AppendFormat("{0:x2}", item);
}
hashAlgorithm.Clear();
return stringBuilder.ToString();
}
}
public static string PasswordEncryption1(string pwd)
{
//创建SHA1加密算法对象
SHA1 sha1 = SHA1.Create();
//将原始密码转换为字节数组
byte[] originalPwd = Encoding.UTF8.GetBytes(pwd);
//执行加密
byte[] encryPwd = sha1.ComputeHash(originalPwd);
//将加密后的字节数组转换为大写字符串
return string.Join("", encryPwd.Select(b => string.Format("{0:x2}",
b)).ToArray()).ToUpper();
}
///<summary>
/// 随机字符串
///</summary>
/// <param name="length">长度</param>
///<returns></returns>
public static string GetRandomString(int length)
{
byte[] b = new byte[32];
RandomNumberGenerator.Create().GetBytes(b);
System.Random random = new System.Random(BitConverter.ToInt32(b, 0));
string str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
string returnStr = string.Empty;
for (int i = 0; i < length; i++)
{
returnStr += str.Substring(random.Next(0, str.Length - 1), 1);
}
return returnStr;
}
private DataSet JsonToDataset(string json)
{
string newJson = "{\"root\":" + json + "}";
//将JSON转成XML
XmlDocument doc = JsonConvert.DeserializeXmlNode(newJson, "root");
//将XML转成DataSet
StringReader sr = new StringReader(doc.InnerXml);
DataSet ds = new DataSet();
ds.ReadXml(sr);
return ds;
}
public bool WriteLog(string filePath, string DocumentId, string log_info)
{
if (log_info == "")
{
log_info = "\r\n" + "[" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "]" + "---" + DocumentId + "---案件:发送成功。" + "\r\n";
}
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
FormMainFuture.FormMainFutureStatic.ProcessShowLog(log_info);
bool flag = true;
File.AppendAllText(filePath + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + "镁信发送案件日志.txt", log_info);
log = "";
return flag;
}