tnblog
首页
视频
资源
登录

ABP 使用阿里人脸身份证比对,post请求、json序列化

4869人阅读 2022/4/15 16:03 总访问:1595692 评论:0 收藏:0 手机
分类: ABP

全称:【天眼数聚】人像实人认证-人像比对-人脸身份证比对-人脸三要素对比-人证比对-人脸身份证实名认证-人脸对比实名认证-人脸认证

json序列化所需的Dto,注意:Dto属性名称一定要和json数据名称一致
json格式:
{        "success": false,    "code": 400, //指返回码,并非http状态码    "msg": "入参错误,身份证号[idcard]格式错误",    "data": { } }


  1. /// <summary>
  2.     /// 返回身份证官方信息Dto
  3.     /// </summary>
  4.     public class ResultDto
  5.     {
  6.         /// <summary>
  7.         /// 信息
  8.         /// </summary>
  9.         public string Msg { getset; }
  10.         /// <summary>
  11.         /// 成功
  12.         /// </summary>
  13.         public string Success { getset; }
  14.         /// <summary>
  15.         /// 代码
  16.         /// </summary>
  17.         public string Code { getset; }
  18.         /// <summary>
  19.         /// 子集数据
  20.         /// </summary>
  21.         public ResultDto2 Data { getset; }
  22.     }
  23.     /// <summary>
  24.     /// 返回子集身份证官方信息Dto
  25.     /// </summary>
  26.     public class ResultDto2
  27.     {
  28.         /// <summary>
  29.         /// 订单号
  30.         /// </summary>
  31.         public string Order_no { getset; }
  32.         /// <summary>
  33.         /// score 比较结果分值,0-1之间的小数,参考指标:0.40以下系统判断为不同人;
  34.         /// 0.40-0.44不能确定是否为同一人;0.45及以上系统判断为同一人
  35.         /// </summary>
  36.         public string Score { getset; }
  37.         /// <summary>
  38.         /// 比较结果的描述
  39.         /// </summary>
  40.         public string Msg { getset; }
  41.         /// <summary>
  42.         /// 比较结果返回码,见incorrect详解
  43.         /// </summary>
  44.         public string Incorrect { getset; }
  45.         /// <summary>
  46.         /// 性别
  47.         /// </summary>
  48.         public string Sex { getset; }
  49.         /// <summary>
  50.         /// 生日
  51.         /// </summary>
  52.         public string Birthday { getset; }
  53.         /// <summary>
  54.         /// 地址
  55.         /// </summary>
  56.         public string Address { getset; }
  57.     }


//Dto结构

所需的依赖包

  1. using Abp.UI;
  2. using Newtonsoft.Json;
  3. using Newtonsoft.Json.Linq;
  4. using System;
  5. using System.IO;
  6. using System.Net;
  7. using System.Net.Security;
  8. using System.Security.Cryptography.X509Certificates;
  9. using System.Text;
  10. using ZZY.Finance.FaceIDcards.Dto;


具体代码

  1. namespace ZZY.Finance.FaceIDcards
  2. {
  3.     /// <summary>
  4.     /// 人脸身份证对比应用层
  5.     /// </summary>
  6.     public class FaceIDcard : FinanceAppServiceBaseIFaceIDcard
  7.     {
  8.         /// <summary>
  9.         /// 依赖注入
  10.         /// </summary>
  11.         public FaceIDcard()
  12.         {
  13.         }
  14.         private const String host = "https://faceidcardb.shumaidata.com";
  15.         private const String path = "/getfaceidb";
  16.         private const String method = "POST";
  17.         //appcode :个人的appcode 
  18.         private const String appcode = "1233211234567";
  19.         /// <summary>
  20.         /// 人脸身份证对比查询
  21.         /// </summary>
  22.         /// <returns></returns>
  23.         public ResultDto GetFaceIDcardJsonToDto(FaceIDcardQueryDto Query)
  24.         {
  25.             try
  26.             {
  27.                 String url = host + path;
  28.                 string body = "";
  29.                 body += "idcard=" + Query.IDNo;
  30.                 body += "&name=" + Query.Name;
  31.                 body += "&url=" + Query.Url;
  32.                 var Result = GetFunction(url, body);
  33.                 return JsonStringToObj<ResultDto>(Result);
  34.             }
  35.             catch
  36.             {
  37.                 throw new UserFriendlyException("系统提示:官方身份证信息获取失败!");
  38.             }
  39.         }
  40.         /// <summary>
  41.         /// sjon反序列化
  42.         /// </summary>
  43.         /// <typeparam name="ObjType"></typeparam>
  44.         /// <param name="JsonString"></param>
  45.         /// <returns></returns>
  46.         protected static ObjType JsonStringToObj<ObjType>(string JsonString) where ObjType : class
  47.         {
  48.             return JsonConvert.DeserializeObject<ObjType>(JsonString); 
  49.         }
  50.         /// <summary>
  51.         /// 调用接口-POST方法
  52.         /// </summary>
  53.         /// <param name="url"></param>
  54.         /// <param name="bodys"></param>
  55.         /// <returns></returns>
  56.         protected static string GetFunction(string url, string bodys)
  57.         {
  58.             String querys = "";
  59.             HttpWebRequest httpRequest = null;
  60.             if (0 < querys.Length)
  61.             {
  62.                 url = url + "?" + querys;
  63.             }
  64.             if (host.Contains("https://"))
  65.             {
  66.                 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
  67.                 httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
  68.             }
  69.             else
  70.             {
  71.                 httpRequest = (HttpWebRequest)WebRequest.Create(url);
  72.             }
  73.             httpRequest.Method = method;
  74.             httpRequest.Headers.Add("Authorization""APPCODE " + appcode);
  75.             //根据API的要求,定义相对应的Content-Type
  76.             httpRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
  77.             if (0 < bodys.Length)
  78.             {
  79.                 byte[] data = Encoding.UTF8.GetBytes(bodys);
  80.                 using (Stream stream = httpRequest.GetRequestStream())
  81.                 {
  82.                     stream.Write(data, 0, data.Length);
  83.                 }
  84.             }
  85.             HttpWebResponse response = (HttpWebResponse)httpRequest.GetResponse();
  86.             Stream myResponseStream = response.GetResponseStream();
  87.             StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
  88.             string retString = myStreamReader.ReadToEnd();
  89.             return retString;
  90.         }
  91.         /// <summary>
  92.         /// 忽略证书认证错误处理的函数
  93.         /// </summary>
  94.         /// <param name="sender"></param>
  95.         /// <param name="certificate"></param>
  96.         /// <param name="chain"></param>
  97.         /// <param name="errors"></param>
  98.         /// <returns></returns>
  99.         public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
  100.         {
  101.             return true;
  102.         }
  103.     }
  104. }



评价

.netcore3.1 ABP+vue 实战 (一)

ABP前言一个应用程序框架和起点的ASP.NET MVC web应用程序与最佳实践和最流行的工具!(它是这样说的)1.项目的创建创建项...

ABP框架的介绍和基用法

一、什么是ABP框架? ABP框架全称为“ASP.NETBoilerplateProject”,中文翻译为“ASP.NET样板项目”,诞生的主要目的就是...

ABP数据库迁移

让我们来了解数据库迁移吧!还坑了我好久哇!一、首先二、出现程序包后按以下步骤做如果没按照以上步骤做的话你输入的是add...

ABP添加菜单(服务端添加菜单项)

一 首先创建好一个项目二、找到Navigation结尾类,在类中找到SetNavigation方法,按照模板中提供的菜单添加方法添加MenuIte...

ABP 框架之Navicat 误删数据库怎么恢复

前言:hello 大家好 我们又见面了 我是小付今天我tmd手贱 不小心把数据库干没了一言难尽啊,话不多说一起来看看吧。上次我...

ABP框架中用插件生成复选框(神坑)

前言:hello ,各位老铁们 五一收假了 也该收心了 今天和小付一起来看看我遇到的问题吧!今天要说的是用插件生成复选框上次...

EF多种更新方法。EF修改,Entity Framework修改。ABP vnext ef 更新封装

[TOC] 方法1:直接执行更新的sql语句过于简单不说了 方法2:先查询在更新Users result = oapEntities.Users.Where(a =&gt...

ABP tatable插件实现页面跳转查询数据

columnDefs:[ { targets:0, data:&quot;identification&quot;, render:function(data){ //此处是跳转页面连接(根指定...

ABP swagger方法重载

代码:services.AddSwaggerGen(c =&gt; { c.ResolveConflictingActions(apiDescriptions =&gt; apiDescriptions.First()); });

ABP项目下载

下载链接:https://aspnetboilerplate.com/Templates版本视情况而定1.2.

ABP 视图生成

一.先在数据库生成一个视图,如下:二.在ABP程序的Core层创建与数据库里视图所对应的实体如下:三.在ABP程序的EntityFrame...

ABP Xml为Swagger接口页添加详细注释

我们选中我们Application层的项目,右键“属性”,勾选为Xml生成文档,如下图所示。在你的 项目名.Web.Host 的startup目录...

ABP 控制台的基本操作

Update-Database -Migration:0 (删除表结构,受用于数据库,它把数据库的表结构删了)drop-database(数据库删除)Remove-...

ABP 自动映射 AutoMapper

转载:https://www.cnblogs.com/sugarwxx/p/13298800.html自动映射有如下几种:AutoMap,AutoMapFrom和AutoMapTo1.AutoMap...

ABP 多租户数据共享

转载于:https://www.cnblogs.com/Martincheng/p/10185430.htmlABP开启多租户,实体继承了IMayHaveTenant或者IMustHaveTena...
没有个性,不需要签名
排名
4
文章
473
粉丝
3
评论
2
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术