Maui+blazor中使用https时信任所有证书

news/2025/3/11 0:33:31/文章来源:https://www.cnblogs.com/bigmini/p/18237386

Maui中的Android使用https时信任所有证书

前言

最近使用Maui+blazor写了一个Android app,需要调用webapi接口,同时需要用websock与服务器通信,在使用http和https中遇到一些问题

http

Android默认禁止http,想要使用http需要在Platforms\Android目录下找到AndroidManifest.xml文件,然后在application节点中添加android:UsesCleartextTraffic="true" 如图
输入图片说明

或者在MainApplication类中的Application特性中添加UsesCleartextTraffic = true

    [Application(UsesCleartextTraffic =true)]public class MainApplication : MauiApplication{public MainApplication(IntPtr handle, JniHandleOwnership ownership): base(handle, ownership){}protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();}

https

使用https时因为需要证书,目前没有证书,就在iis中创建了个自签名证书(webapi发布到了iis),这时想要调用api接口需要信任证书,官网上给的解决方案如下

    public class HttpsClientHandlerService{public HttpMessageHandler GetPlatformMessageHandler(){
#if ANDROIDvar handler = new Xamarin.Android.Net.AndroidMessageHandler{ServerCertificateCustomValidationCallback = (message, cert, chain, errors) =>{if (cert != null && cert.Issuer.Equals("CN=LAPTOP-CL5H1EIT"))return true;return errors == System.Net.Security.SslPolicyErrors.None;}};return handler;
#elif IOSvar handler = new NSUrlSessionHandler{TrustOverrideForUrl = IsHttpsLocalhost};return handler;
#elsethrow new PlatformNotSupportedException("Only Android and iOS supported.");
#endif}#if IOSpublic bool IsHttpsLocalhost(NSUrlSessionHandler sender, string url, Security.SecTrust trust){return url.StartsWith("https://localhost");}
#endif}
     builder.Services.AddScoped(sp => new HttpClient(new HttpsClientHandlerService().GetPlatformMessageHandler()) { BaseAddress = new Uri("https://192.168.6.13") });

先在一个类中创建一个反回httpmessagehandle
的方法,在实例化httpclient时传入,这时在请求接口时cert参数会获取证书的信息,这里做了一下判断,也可以直接返回true

websocket

在websocket使用wss请求连接如下

ClientWebSocket webSocket = new ClientWebSocket();webSocket.Options.RemoteCertificateValidationCallback = (message,cain,cailn,error) => true;await webSocket.ConnectAsync(new Uri("wss://192.168.6.13/pumpsys/Websocket/GetWebsocketConnection"), disposalTokenSource.Token);await SendMessageAsync();await ReceiveLoop();

和使用httpclient调用接口差不多,在option中有个remotecertificatevalidationcallback的委托,
他在请求连接时也会返回证书信息在cain参数中

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件格式转换器哪个工具更好用?

文件格式转换器哪个好用?相信很多小伙伴在处理PDF文件时会遇到各种各样的问题,不晓得的选择哪款文件格式转换器!这个时候我们该如何解决呢?以下是文件格式转换器推荐,一起来看看吧。 一、Adobe Acrobat 推荐指数★★★☆☆ Adobe Acrobat是一款非常成熟的在线PDF转换软件,…

yarn或者npm安装依赖报错401 Unauthorized

1. 报错2.原因 在npm顶层的npmrc中指定了某仓库地址,触发了需要验证(可以通过直接打开401的地址看浏览器是否能直接下载)

pr的工作原理

Premiere Pro了解pr面板菜单栏:里面包括文件,编辑,剪辑,序列,标记,窗口,帮助等,在这些菜单里还有子菜单。效果面板:双击素材,可以在效果面板里进行编辑你想要的效果。节目面板:在时间轴里编辑时,要是查看效果在节目面板里进行查看。项目面板:导入和新建的素材都可…

ARM技术 —— 条件执行

文档: DDI0487J_a_a-profile_architecture_reference_manual.pdf本文来自博客园,作者:摩斯电码,未经同意,禁止转载

pr工作原理文档

Adobe Premiere Pro的工作原理思维导图 Pr面板展示图 第一步:导入视频1导入点击文件——点击导入——选择视频,双击视频或点击打开按钮——完成导入。2预览点击视频,拖到右侧;拖动蓝色条,时间指针,点击会快速预览,快捷键是空格键。3视频轨道和音频轨道A声音;V:视频;左…

vue3+TypeScript

1. Vue3简介2020年9月18日,Vue.js发布版3.0版本,代号:One Piece(n经历了:4800+次提交、40+个RFC、600+次PR、300+贡献者官方发版地址:Release v3.0.0 One Piece vuejs/core截止2023年10月,最新的公开版本为:3.3.41.1. 【性能的提升】打包大小减少41%。初次渲染快55%, …

pr工作原理

Pr图像式基础课一新建项目二新建序列下一页看后续三颜色调出Lumetri颜色,色轮部分就可以进行颜色的调整(个人)四认识三面板与效果效果控件是pr软件的重要组成部分,它可以对视频效果的调节时间轴上可以进行调节与裁剪无用的视频段画面的展示和查看搜索查找效果五工具的认识选…

FastAPI-4:异步、并发和Starlette

4 异步、并发和Starlette 本章关注FastAPI的底层Starlette库,尤其是它对异步处理的支持。在概述了Python中“同时做更多事情”的多种方法后,您将看到Python中较新的async和await关键字是如何融入Starlette和FastAPI的。4.1 Starlette FastAPI 的大部分网络代码都基于 Tom Chr…

实验6_C语言结构体、枚举应用编程

实验任务4#include <stdio.h> #define N 10typedef struct {char isbn[20]; // isbn号char name[80]; // 书名char author[80]; // 作者double sales_price; // 售价int sales_count; // 销售册数 } Book;void output(Book x[], int…

k8s里node 宕机后如何提高pod迁移速度

大概的配置参数:node故障后,pod会迁移到 正常的node上, 迁移时间大概8分钟左右, 如果是微服务,注册到nacos,服务不受影响,但是对于其他的服务,请求中会有大量失败。需要几个流程: kubelet 自身会定期更新状态到 apiserver,通过kubelet的参数 node-status-update-freq…

day11 Xpath

网页分析有优势,全称XML Path Language一种小型的查询语言 优点:可在XML中查询信息 支持HTML的查询 通过元素和属性进行导航 PY使用需要安装库:安装lxml selector = etree.HTML(html_doc)//实例化对象,实际上就是一个Element类,通过逻辑运算: //div[@id and @class]查找…

智慧社区

智慧社区 # 智慧社区-小程序-欢迎页面-首页-轮播图-公告-信息采集,社区活动,人脸检测,语音识别,心率检测,积分商城-信息采集页面-采集人数-采集详情页面-采集统计页面-人脸检测页面-语音识别页面-积分商城页面-活动-活动列表-报名活动-加载更多-公告-公告列表-我的-信息展…