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.
399 lines
18 KiB
399 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; |
|
using System.Globalization; |
|
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); |
|
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; |
|
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); |
|
} |
|
} |
|
|
|
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); |
|
string sign_pic_path = jo4["sign_pic_path"].ToString(); |
|
|
|
string dirpath = Utils.getSystemPaht() + @"/wwwroot/SignFile"; |
|
if (!Directory.Exists(dirpath)) |
|
{ |
|
Directory.CreateDirectory(dirpath); |
|
} |
|
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\":\"" + "签字异常" + "\"}"; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 文字转语音 |
|
/// </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); |
|
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"); |
|
request.Content = content; |
|
var response = await client.SendAsync(request); |
|
response.EnsureSuccessStatusCode(); |
|
if (response.StatusCode.ToString() == "OK") |
|
{ |
|
// 读取响应内容 |
|
string body = await response.Content.ReadAsStringAsync(); |
|
// Log.Info("文字转语音:" + body); |
|
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; |
|
} |
|
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(); |
|
// Log.Info("获取指纹:" + body); |
|
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> |
|
/// 读取身份证 |
|
/// </summary> |
|
/// <returns></returns> |
|
public async Task<string> OpenGetIdcard(string type, int typeCode) |
|
{ |
|
try |
|
{ |
|
var client = new HttpClient(); |
|
var request = new HttpRequestMessage(HttpMethod.Post, Parame.signUrl); |
|
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"); |
|
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") |
|
{ |
|
//读取指纹 |
|
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"; |
|
} |
|
} |
|
else |
|
{ |
|
//Log.Error("请求签字失败" + jo["message"].ToString()); |
|
return ""; |
|
} |
|
} |
|
else |
|
{ |
|
return ""; |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
//Log.Error("签字异常:" + ex.Message); |
|
return ""; |
|
} |
|
} |
|
|
|
} |
|
}
|
|
|