当前位置: 首页 > news >正文

双鸭山市建设局网站做外国网站

双鸭山市建设局网站,做外国网站,南京越城建设集团网站,网站开发和推广的不同从虚拟机调用本地API报各种 SSL 连接不上的错误,这给本地调试造成了极大的不便,在被这个问题困扰了多日以后,终于在GitHub上找到答案 基于这个 帖子 ,有一个回复 他写了一个帮助类,专门用来调试本地的API,…

从虚拟机调用本地API报各种 SSL 连接不上的错误,这给本地调试造成了极大的不便,在被这个问题困扰了多日以后,终于在GitHub上找到答案

基于这个 帖子 ,有一个回复

他写了一个帮助类,专门用来调试本地的API,并给出了这个调用类的用法,此帮助类如下

using System.Net.Security;public class DevHttpsConnectionHelper
{public DevHttpsConnectionHelper(int sslPort){SslPort = sslPort;DevServerRootUrl = FormattableString.Invariant($"https://{DevServerName}:{SslPort}");LazyHttpClient = new Lazy<HttpClient>(() => new HttpClient(GetPlatformMessageHandler()));}public int SslPort { get; }public string DevServerName =>
#if WINDOWS"localhost";
#elif ANDROID"10.0.2.2";
#elsethrow new PlatformNotSupportedException("Only Windows and Android currently supported.");
#endifpublic string DevServerRootUrl { get; }private Lazy<HttpClient> LazyHttpClient;public HttpClient HttpClient => LazyHttpClient.Value;public HttpMessageHandler? GetPlatformMessageHandler(){
#if WINDOWSreturn null;
#elif ANDROIDvar handler = new CustomAndroidMessageHandler();handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) =>{if (cert != null && cert.Issuer.Equals("CN=localhost"))return true;return errors == SslPolicyErrors.None;};return handler;#elsethrow new PlatformNotSupportedException("Only Windows and Android currently supported.");
#endif}#if ANDROIDinternal sealed class CustomAndroidMessageHandler : Xamarin.Android.Net.AndroidMessageHandler{protected override Javax.Net.Ssl.IHostnameVerifier GetSSLHostnameVerifier(Javax.Net.Ssl.HttpsURLConnection connection)=> new CustomHostnameVerifier();private sealed class CustomHostnameVerifier : Java.Lang.Object, Javax.Net.Ssl.IHostnameVerifier{public bool Verify(string? hostname, Javax.Net.Ssl.ISSLSession? session){returnJavax.Net.Ssl.HttpsURLConnection.DefaultHostnameVerifier.Verify(hostname, session)|| hostname == "10.0.2.2" && session.PeerPrincipal?.Name == "CN=localhost";}}}
#endif
}

 在安卓机里面是没有 localhost 的,也没有 127.0.0.1 代表本机的取而代之的是 10.0.2.2 。在 HTTPS 里面,证书是被强制使用的,本地 Web API 会有一个默认证书,他里面带一个 “CN=localhost” 所以上面的类针对这个进行了过滤,并且 Android 的底层用的不是默认的 .net 的 HttpClient ,使用了 GetPlatformMessageHandler 进行了重写,这个可是Java 的包。

我的本地调用使用

                            var devSslHelper = new DevHttpsConnectionHelper(sslPort: 5001);_blazorHubConnection = new HubConnectionBuilder()
#if ANDROID.WithUrl(devSslHelper.DevServerRootUrl + "/hubs/devicehub", configureHttpConnection: o =>{o.HttpMessageHandlerFactory = m => devSslHelper.GetPlatformMessageHandler();})
#else.WithUrl(devSslHelper.DevServerRootUrl + "/hubs/devicehub")
#endif.Build();

这个时候就不报 SSL 的连接错误了,可以方便的正常调试

http://www.yayakq.cn/news/443221/

相关文章:

  • 怎样做个网站蜜雪冰城网页设计素材
  • php网站开发核心技术封面型网站首页怎么做
  • 郑州网站制作公司怎么样rp网站做多大
  • 网站建设哪个公司好知乎分类目录检索
  • 网站建设公司不给ftp广东网站建设案例
  • 响水专业做网站的公司全面的苏州网站建设
  • 朱子网站建设开发公司装饰装修合同范本简单
  • 网站建设背景是什么高端商城网站建设
  • 网站举报入口做外贸 用国内空间做网站
  • 网站建设需要注意什么哪些做资源的教育类网站或公司
  • 赤峰网站建设建站公司龙华新区城市建设局网站
  • 东莞网站建设设计公司哪家好网站建设基于
  • 中企潍坊分公司网站wordpress进入
  • 电子商务网站建设主管的策划书宣城做网站公司
  • 微信对接网站惠州博罗建设局网站
  • 网站建设费怎么入分录手机微网站价
  • 辽宁品质网站建设价格实惠怎么做淘宝网站赚钱
  • 论坛网站怎么建设哈尔滨市学府头道街52号
  • 一家专做二手手机的网站叫什么手机wordpress主题怎么破解
  • 网站工作状态建设响应式网站设计
  • 厦门网站建设模拟wordpress招聘
  • 杭州哪家做网站广州网站优化渠道
  • 手表网站模版动态ip网站如何备案
  • 苏州网站建设 江苏千渡有哪个网站可以做ppt赚钱
  • 坪山网站建设策划网站企业制作
  • 网站建设外包 源代码wordpress node.js
  • 西安建设用地规划查询网站电商网站的建设与运营
  • c 网站开发人员工具乾安网站建设
  • 传媒公司做网站编辑 如何在义乌做电商怎么起步
  • 阿里巴巴做网站难吗便宜的自助建站