MAUI android连接sqlserver

news2024/9/24 5:33:24

PDA是android系统,调用金蝶云星空webapi实现仓库收发料,使用读取webapi有些功能无法实现,需要直接读写数据库,读取报错,如图:

用控制台程序测试正常读取

google搜索了一圈, 都需要使用ssl证书才能解决,终于找到不用证书的解决办法,参考地址

c# - "Trust anchor for certification path not found." in a .NET Maui Project trying to contact a local .NET WebApi - Stack Overflow

操作步骤:

在Platforms\Android下新建DangerousTrustProvider.cs文件,如下图

添加命名空间

using System;
using Java.Net;
using Java.Security;
using Java.Security.Cert;
using Javax.Net.Ssl;

添加代码

internal class DangerousTrustProvider : Provider
{
    private const string TRUST_PROVIDER_ALG = "DangerousTrustAlgorithm";
    private const string TRUST_PROVIDER_ID = "DangerousTrustProvider";

    public DangerousTrustProvider() : base(TRUST_PROVIDER_ID, 1, string.Empty)
    {
        var key = "TrustManagerFactory." + DangerousTrustManagerFactory.GetAlgorithm();
        var val = Java.Lang.Class.FromType(typeof(DangerousTrustManagerFactory)).Name;
        Put(key, val);
    }

    public static void Register()
    {
        Provider registered = Security.GetProvider(TRUST_PROVIDER_ID);
        if (null == registered)
        {
            Security.InsertProviderAt(new DangerousTrustProvider(), 1);
            Security.SetProperty("ssl.TrustManagerFactory.algorithm", TRUST_PROVIDER_ALG);
        }
    }

    public class DangerousTrustManager : X509ExtendedTrustManager
    {
        public override void CheckClientTrusted(X509Certificate[] chain, string authType, Socket socket) { }
        public override void CheckClientTrusted(X509Certificate[] chain, string authType, SSLEngine engine) { }
        public override void CheckClientTrusted(X509Certificate[] chain, string authType) { }
        public override void CheckServerTrusted(X509Certificate[] chain, string authType, Socket socket) { }
        public override void CheckServerTrusted(X509Certificate[] chain, string authType, SSLEngine engine) { }
        public override void CheckServerTrusted(X509Certificate[] chain, string authType) { }
        public override X509Certificate[] GetAcceptedIssuers() => Array.Empty<X509Certificate>();
    }

    public class DangerousTrustManagerFactory : TrustManagerFactorySpi
    {
        protected override void EngineInit(IManagerFactoryParameters mgrparams) { }
        protected override void EngineInit(KeyStore keystore) { }
        protected override ITrustManager[] EngineGetTrustManagers() => new ITrustManager[] { new DangerousTrustManager() };
        public static string GetAlgorithm() => TRUST_PROVIDER_ALG;
    }
}

复制上面的代码,粘贴替换,如图

完整代码如图

打开,MauiProgram.cs增加调用代码

#if ANDROID
	Platforms.Android.DangerousTrustProvider.Register();
#endif

如图

再次用模拟器测试,读取成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1014507.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云云耀云服务器 L 实例评测|配置教程 + 用 Python 简单绘图

文章目录 Part.I IntroductionChap.I 云耀云服务器 L 实例简介Chap.II 参与活动步骤 Part.II 配置Chap.I 初步配置Chap.II 配置安全组 Part.III 简单使用Chap.I VScode 远程连接华为云Chap.II 简单绘图 Reference Part.I Introduction 本篇博文是为了参与华为“【有奖征文】华…

为建模而建模,高成本的临床预测模型意义何在?

9.23-24 郑老师“量表与中介研究数据分析”课程&#xff0c;欢迎报名 “量表与中介研究数据分析”9.23-24直播课&#xff0c;发文后退款 关于预测模型&#xff0c;周三有位同学过来咨询我&#xff0c;说“郑老师&#xff0c;毕业论文&#xff0c;建一个脑卒中患者抑郁的预测模型…

Linux 简介 启动过程

简介 Linux 是一套免费使用和自由传播的开放源码的类 UNIX 操作系统&#xff0c;英文解释为&#xff1a; Linux is not Unix。1991 年由林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在赫尔辛基大学上学时出于个人爱好而编写的&#xff0c;主要受到 Minix 和 Unix 思想的…

JavaSE---常用的API

1. 什么是API&#xff1f; API (Application Programming interface) 应用程序编程接口。通俗来讲&#xff0c;就是Java已经帮我们写好了一些方法&#xff0c;我们直接拿过来用即可。 iodraw&#xff1a;https://www.iodraw.com/ API在线中文文档&#xff1a;https://www.ma…

Python入门教程39:教你使用distutils本地发布模块与模块安装的操作

★★★★★博文创作不易&#xff0c;我的博文不需要打赏&#xff0c;也不需要知识付费&#xff0c;可以白嫖学习编程小技巧。使用代码的过程中&#xff0c;如有疑问的地方&#xff0c;欢迎大家指正留言交流。喜欢的老铁可以多多点赞收藏分享置顶&#xff0c;小红牛在此表示感谢…

RabbitMQ消息可靠性(一)-- 生产者消息确认

前言 在项目中&#xff0c;引入了RabbitMQ这一中间件&#xff0c;必然也需要在业务中增加对数据安全性的一层考虑&#xff0c;来保证RabbitMQ消息的可靠性&#xff0c;否则一个个消息丢失可能导致整个业务的数据出现不一致等问题&#xff0c;对系统带来巨大的影响&#xff0c;…

tomcat架构概览

https://blog.csdn.net/ldw201510803006/article/details/119880100 前言 Tomcat 要实现 2 个核心功能&#xff1a; 处理 Socket 连接&#xff0c;负责网络字节流与 Request 和 Response 对象的转化。加载和管理 Servlet&#xff0c;以及具体处理 Request 请求。 因此 Tomc…

weblogic __ 10.3.6 __ 反序列化漏洞 _ CVE-2017-10271

weblogic __ 10.3.6 __ 反序列化漏洞 _ CVE-2017-10271 说明内容漏洞编号CVE-2017-10271漏洞名称反序列化漏洞影响范围10.3.6.0.0&#xff0c;12.1.3.0.0&#xff0c;12.2.1.1.0&#xff0c;12.2.1.2.0漏洞描述Weblogic的WLS Security组件对外提供webservice服务&#xff0c;其…

MySQL里的查看操作

查看数据库或者表 列出所有数据库&#xff1a; show databases;查看正在使用的数据库&#xff08;必须大写&#xff09;&#xff1a; SELECT DATABASE();列出数据库中的表&#xff1a; use 数据库;//选中数据库 show 表;//列出当前数据库下所有表获取数据库表结构&#xff…

OpenCV(四十七):RANSAC优化特征点匹配

1.RANSAC算法介绍 RANSAC是一种常用的参数估计方法&#xff0c;全称为Random Sample Consensus&#xff08;随机抽样一致性&#xff09;。它的主要思想是通过随机选择一部分数据样本&#xff0c;构建模型并评估其拟合程度&#xff0c;迭代过程中逐步优化模型&#xff0c;最终得…

Linux知识点 -- 网络基础(二)

Linux知识点 – 网络基础&#xff08;二&#xff09;&#xff08;1&#xff09; 文章目录 Linux知识点 -- 网络基础&#xff08;二&#xff09;&#xff08;1&#xff09;一、使用协议来实现一个网络版的计算器1.自定义协议2.守护进程3.使用json来完成序列化 二、HTTP协议1.概念…

Redis 事务实现原理

1. 什么是Redis事务 提到事务,我们可能马上会想到传统的关系型数据库中的事务,客户端首先向服务器发送BEGIN开启事务,然后执行读写操作,最后用户发送 COMMIT 或者 ROLLBACK 来提交或者回滚之前的操作。 但是Redis中的事务与关系型数据库是不一样的,Redis 通过 MULTI 命令开始…

GB28181学习(四)——网络设备信息查询

要求 源设备向目标设备发送信息查询命令&#xff0c;目标设备将结果通过查询应答命令返回给源设备&#xff1b;设备信息查询命令包括&#xff1a; 设备目录设备信息设备状态信息设备配置预置位、看守位巡航轨迹列表巡航轨迹PTZ精准状态存储卡状态等 信息查询的范围&#xff1a…

内网穿透对开发人员有什么作用?要怎么实现?快解析

在当今快节奏的互联网时代&#xff0c;软件开发人员需要时刻与内外部服务器进行通信和调试&#xff0c;只有这样才能带来良好的工作速度&#xff0c;顺利推动项目的进展。然而&#xff0c;由于受到网络环境的限制&#xff0c;有时候我们可能无法直接访问公司内网的服务器&#…

差分方程模型:蛛网模型

在完全竞争的市场经济中&#xff0c;一个时期某种消费品如猪肉的上市量远远大于需求量&#xff0c;由于销售不畅导致价格下降&#xff0c;生产者发现养猪赔钱&#xff0c;于是转而经营其它农副产品。过一段时间猪肉上市量就会下降&#xff0c;此时供不应求导致价格上涨&#xf…

【MySQL】MySQL索引的定义、分类、Explain、索引失效和优化

索引的介绍 索引是帮助MySQL高效获取数据的数据结构 MySQL在存储数据之外&#xff0c;数据库系统中还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种引用(指向)表中的数据&#xff0c;这样我们就可以通过数据结构上实现的高级查找算法来快速找到我们想要的数…

设计原则SOLID看这一篇就够了

文章目录 1.引言1.1. 背景1.2. 简要介绍 SOLID 原则1.1. 面向对象编程和设计的重要性 2. 单一职责原则&#xff08;SRP&#xff09;2.1. 定义和原理2.2. SRP 的好处与目标2.3. 例子和代码展示2.4. 如何识别和解决 SRP 原则的违反2.5. 注意事项和局限性 3. 开闭原则&#xff08;…

Centos7.9 一键脚本部署 LibreNMS 网络监控系统

前言&#xff1a; LibreNMS 是个以 PHP/MySQL 为基底的自动探索网络监控系统 LibreNMS 官网 版本23.8.2-52-g7bbe0a2 - Thu Sep 14 2023 22:33:23 GMT0700数据库纲要2023_09_01_084057_application_new_defaults (259)Web 服务器nginx/1.20.1PHP8.1.23Python3.6.8DatabaseMa…

Killer!永久禁用WindowsDefender

工具介绍 WinDefenderKiller&#xff0c;使用C写的通过注册表项永久禁用Windows Defende的一个工具。 关注【Hack分享吧】公众号&#xff0c;回复关键字【230726】获取下载链接 编译使用 执行以下命令编译&#xff1a; # x86_64-w64-mingw32-g -O2 disableWinDef.cpp -o win…

JS 原型和原型链

原型和原型链 1. 了解原型和原型链1.1 原型1.2 原型链 2. 原型2.1 prototype2.2 __proto__ 隐式原型 3. 原型链 1. 了解原型和原型链 1.1 原型 原型&#xff1a; prototype 又称显示原型 1、原型是一个普通对象 2、只有构造函数才具备该属性 3、公有属性可操作 1.2 原型链 原…