采用网络对联方式交互数据
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

400 lines
18 KiB

using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using CPF.Controls;
using AKSWebBrowser.Commen;
using System.Collections;
using System.Net.NetworkInformation;
using AKS.EnterpriseLibrary.WebBrowser;
1 year ago
using System.Globalization;
1 year ago
using CPF;
using CPF.Windows;
using static System.Net.Mime.MediaTypeNames;
using System.Text.RegularExpressions;
namespace AksWebBrowser.Common
{
public class ChunkedUpload
{
private readonly HttpClient _httpClient;
public static string callback = string.Empty;
public ChunkedUpload(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task<string> UploadFileAsync(string url, string filePath)
{
string ret = string.Empty;
using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
FileInfo fileInfo = new FileInfo(filePath);
int totalParts = 1;
int chunkNumber = 1;
// 读取文件流其实位置
var fileStreamPos = 0;
var uploadUrl = $"{url}?partNumber={chunkNumber}&chunks={totalParts}&size={fileInfo.Length}&start={fileStreamPos}&end={fileInfo.Length}&total={fileInfo.Length}&FileName={Path.GetFileName(filePath)}";
using (var client = new HttpClient())
{
var formData = new MultipartFormDataContent();
formData.Add(new StreamContent(fileStream, (int)fileStream.Length), "file", Path.GetFileName(filePath) + ".partNumber-1");
var response = await client.PostAsync(uploadUrl, formData);
var responseString = await response.Content.ReadAsStringAsync();
fileStream.Close();
fileStream.Dispose();
ret = responseString;
JObject jo = (JObject)JsonConvert.DeserializeObject(ret);
1 year ago
Log.Info("上传文件返回:" + ret);
if (Convert.ToBoolean(jo["IsSucceed"].ToString()) == true)
{
string result = jo["result"].ToString();
JObject jo1 = (JObject)JsonConvert.DeserializeObject(result);
ret = jo1["url"].ToString();
}
}
}
return ret;
}
/// <summary>
/// get请求 Task<string>
/// </summary>
/// <returns></returns>
public async Task<string> getReq(string query)
{
string ret = string.Empty;
1 year ago
ret = await NewMethod(query, ret);
if (query.Contains("getFrame"))
{
string img = string.Empty;
int num = 0;
while (string.IsNullOrEmpty(img) && num < 5)
{
JObject jo = (JObject)JsonConvert.DeserializeObject(ret);
if (jo["returnCode"].ToString() == "0")
{
string data = jo["data"].ToString();
JObject jo1 = (JObject)JsonConvert.DeserializeObject(data);
//Log.Info("img" + num + (jo1["img"].ToString()));
if (string.IsNullOrEmpty(jo1["img"].ToString()))
{
ret = await NewMethod(query, ret);
}
else
{
img = jo1["img"].ToString();
num = 6;
}
}
else
{
ret = await NewMethod(query, ret);
}
num++;
}
}
return ret;
}
private static async Task<string> NewMethod(string query, string ret)
{
using (var httpClient = new HttpClient())
{
// 构建带参数的请求URI
var uri = Parame.gpyUrl + query;
try
{
// 发送GET请求
HttpResponseMessage response = await httpClient.GetAsync(uri);
response.EnsureSuccessStatusCode();
if (response.StatusCode.ToString() == "OK")
{
// 读取响应内容
string body = await response.Content.ReadAsStringAsync();
ret = body;
}
}
catch (HttpRequestException e)
{
//Log.Error(" get请求: " + e.Message);
}
}
1 year ago
return ret;
}
/// <summary>
/// 获取签字版数据
/// </summary>
/// <returns></returns>
public async Task<string> PostSign(string type, int typeCode, string code)
{
try
{
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, Parame.signUrl);
var content = new StringContent("{\r\n \"command\": \"sign\",\r\n \"command_num\": 111,\r\n \"data\": {\r\n \"operation\": \"" + type + "\",\r\n \"operation_code\": " + typeCode + ",\r\n \"parameters\": {\r\n \"data_type\": 1\r\n }\r\n }\r\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
if (response.StatusCode.ToString() == "OK")
{
if (type == "open" && typeCode == 1)
{
// 读取响应内容
string body = await response.Content.ReadAsStringAsync();
JObject jo = (JObject)JsonConvert.DeserializeObject(body);
string ret = jo["ret_info"].ToString();
JObject jo2 = (JObject)JsonConvert.DeserializeObject(ret);
if (jo2["code"].ToString() == "0")
{
//读取data数据
string data = jo["data"].ToString();
JObject jo3 = (JObject)JsonConvert.DeserializeObject(data);
//读取parameters数据
string parameters = jo3["parameters"].ToString();
JObject jo4 = (JObject)JsonConvert.DeserializeObject(parameters);
1 year ago
string sign_pic_path = jo4["sign_pic_path"].ToString();
string dirpath = Utils.getSystemPaht() + @"/wwwroot/SignFile";
1 year ago
if (!Directory.Exists(dirpath))
{
Directory.CreateDirectory(dirpath);
}
1 year ago
var tempFile = dirpath + "/sign.jpg";
string command = $"convert {sign_pic_path} -quality 10 {tempFile}";
MainModel.ShllCommad(command);
byte[] byteArray = File.ReadAllBytes(tempFile);
string base64String = Convert.ToBase64String(byteArray);
return "{\"keycode\":\"" + code + "\",\"message\":\"success\",\"code\":200,\"status\":true,\"suffix\":\"jpg\",\"data\":\"" + base64String + "\"}";
}
else
{
//Log.Error("请求签字失败" + jo["message"].ToString());
return "{\"keycode\":\"" + code + "\",\"message\":\"Falied\",\"code\":\"400\",\"status\":false,\"suffix\":\"png\",\"data\":\"" + "签字失败" + "\"}";
}
}
else
{
return "{\"keycode\":\"" + code + "\",\"message\":\"success\",\"code\":\"200\",\"status\":true,\"suffix\":\"png\",\"data\":\"" + "关闭成功" + "\"}";
}
}
else
{
if (type == "open" && typeCode == 1)
{
return "{\"keycode\":\"" + code + "\",\"message\":\"Falied\",\"code\":\"400\",\"status\":false,\"suffix\":\"png\",\"data\":\"" + "签字失败" + "\"}";
}
else
{
return "{\"keycode\":\"" + code + "\",\"message\":\"Falied\",\"code\":\"400\",\"status\":false,\"suffix\":\"png\",\"data\":\"" + "关闭签字失败" + "\"}";
}
}
}
catch (Exception ex)
{
//Log.Error("签字异常:" + ex.Message);
return "{\"keycode\":\"" + code + "\",\"message\":\"Falied\",\"code\":\"400\",\"status\":false,\"suffix\":\"png\",\"data\":\"" + "签字异常" + "\"}";
}
}
1 year ago
/// <summary>
/// 文字转语音
1 year ago
/// </summary>
/// <returns></returns>
public async Task<string> PostTTS(string type, int typeCode, string tts_text)
{
try
{
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, Parame.signUrl);
1 year ago
var content = new StringContent("{\r\n \"command\": \"tts\",\r\n \"command_num\": 201,\r\n \"data\": {\r\n \"operation\": \"text_to_wav\",\r\n \"operation_code\": 1,\r\n \"parameters\": {\r\n \"data_type\": 1,\r\n \"tts_text\": \"" + tts_text + "\"\r\n }\r\n }\r\n }", null, "application/json");
1 year ago
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
if (response.StatusCode.ToString() == "OK")
{
// 读取响应内容
string body = await response.Content.ReadAsStringAsync();
1 year ago
// Log.Info("文字转语音:" + body);
1 year ago
JObject jo = (JObject)JsonConvert.DeserializeObject(body);
string ret = jo["ret_info"].ToString();
JObject jo2 = (JObject)JsonConvert.DeserializeObject(ret);
if (jo2["code"].ToString() == "0")
{
//读取data数据
//读取data数据
string data = jo["data"].ToString();
JObject jo3 = (JObject)JsonConvert.DeserializeObject(data);
//读取parameters数据
string parameters = jo3["parameters"].ToString();
JObject jo4 = (JObject)JsonConvert.DeserializeObject(parameters);
//读取签字base64
string sound_path = jo4["sound_path"].ToString();
return sound_path;
1 year ago
}
else
{
//Log.Error("请求签字失败" + jo["message"].ToString());
return "";
}
}
else
{
return "";
}
}
catch (Exception ex)
{
//Log.Error("签字异常:" + ex.Message);
return "";
}
}
/// <summary>
/// 获取指纹
/// </summary>
/// <returns></returns>
public async Task<string> PostFinger(string type, int typeCode)
{
try
{
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, Parame.signUrl);
var content = new StringContent("{\r\n command: \"finger\",\r\n command_num: 121,\r\n data: {\r\n operation: \"" + type + "\",\r\n operation_code: " + typeCode + ",\r\n parameters: {\r\n }\r\n }\r\n }", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
if (response.StatusCode.ToString() == "OK")
{
// 读取响应内容
string body = await response.Content.ReadAsStringAsync();
1 year ago
// Log.Info("获取指纹:" + body);
1 year ago
JObject jo = (JObject)JsonConvert.DeserializeObject(body);
string ret = jo["ret_info"].ToString();
JObject jo2 = (JObject)JsonConvert.DeserializeObject(ret);
if (jo2["code"].ToString() == "0")
{
//读取指纹
if (typeCode == 1)
{
//读取data数据
string data = jo["data"].ToString();
JObject jo3 = (JObject)JsonConvert.DeserializeObject(data);
//读取parameters数据
string parameters = jo3["parameters"].ToString();
JObject jo4 = (JObject)JsonConvert.DeserializeObject(parameters);
//读取签字base64
string fpr_pic = jo4["fpr_pic"].ToString();
return fpr_pic;
}
else
{
//关闭指纹
return "200";
}
}
else
{
//Log.Error("请求签字失败" + jo["message"].ToString());
return "";
}
}
else
{
return "";
}
}
catch (Exception ex)
{
//Log.Error("签字异常:" + ex.Message);
return "";
}
}
/// <summary>
1 year ago
/// 读取身份证
1 year ago
/// </summary>
/// <returns></returns>
1 year ago
public async Task<string> OpenGetIdcard(string type, int typeCode)
1 year ago
{
try
{
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, Parame.signUrl);
1 year ago
var content = new StringContent("{\r\n \"command\": \"idcard\",\r\n \"command_num\": 141,\r\n \"data\": {\r\n \"operation\": \"open\",\r\n \"operation_code\": 1,\r\n \"parameters\": {\r\n }\r\n }\r\n}", null, "text/plain");
1 year ago
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
if (response.StatusCode.ToString() == "OK")
{
// 读取响应内容
string body = await response.Content.ReadAsStringAsync();
JObject jo = (JObject)JsonConvert.DeserializeObject(body);
string ret = jo["ret_info"].ToString();
JObject jo2 = (JObject)JsonConvert.DeserializeObject(ret);
if (jo2["code"].ToString() == "0")
{
1 year ago
//读取指纹
if (typeCode == 1)
{
//读取data数据
string data = jo["data"].ToString();
JObject jo3 = (JObject)JsonConvert.DeserializeObject(data);
//读取parameters数据
string parameters = jo3["parameters"].ToString();
JObject jo4 = (JObject)JsonConvert.DeserializeObject(parameters);
IDCardModel iDCardModel = new IDCardModel();
iDCardModel.Name = jo4["cn_name"].ToString();
iDCardModel.Sex = jo4["sex"].ToString();
iDCardModel.Nation = jo4["nation"].ToString();
iDCardModel.BirthDay = jo4["birth_date"].ToString();
iDCardModel.Addr = jo4["address"].ToString();
iDCardModel.Id = jo4["idcard_number"].ToString();
iDCardModel.Regorg = jo4["deparment"].ToString();
iDCardModel.StartDate = jo4["validity_begin"].ToString();
iDCardModel.EndDate = jo4["balidity_end"].ToString();
iDCardModel.ImageBase64 = "data:image/jpg;base64," + jo4["face_data"].ToString();
var OBJ = new
{
Data = iDCardModel
};
return JsonConvert.SerializeObject(OBJ); ;
}
else
{
//关闭
return "200";
}
1 year ago
}
else
{
//Log.Error("请求签字失败" + jo["message"].ToString());
return "";
}
}
else
{
return "";
}
}
catch (Exception ex)
{
//Log.Error("签字异常:" + ex.Message);
return "";
}
}
}
}