using Android.Runtime; using Java.Security.Cert; using System.IO; using Xamarin.Android.Net; // ReSharper disable once CheckNamespace namespace System { public static class HttpClientExtensions { /// /// 添加可信任证书,可用于调试时HTTPS抓包 /// /// /// 证书文件数据(文件流,内嵌资源流) /// 证书文件类型,默认使用X.509 public static void AddTrustedCerts( this AndroidClientHandler handler, Stream certificateFileData, string certificateFileType = "X.509") { var certificateFactory = CertificateFactory.GetInstance(certificateFileType); if (certificateFactory == null) throw new NullReferenceException( $"CertificateFactory.GetInstance Fail, Type: {certificateFileType}"); var certificate = certificateFactory.GenerateCertificate(certificateFileData); if (certificate == null) throw new NullReferenceException("GenerateCertificate Fail"); if (handler.TrustedCerts == null) handler.TrustedCerts = new JavaList(); handler.TrustedCerts.Add(certificate); } } }