J'apprends comment utiliser xamarin avec C#, et j'ai une application android pour faire des requêtes web à une API externe et je reçois l'erreur suivante;WebException dans Xamarin, en utilisant HttpClient
System.Net.Http.HttpRequestException: An error occurred while sending the
request ---> System.Net.WebException: Error: SecureChannelFailure (The
authentication or decryption has failed.) ---> System.IO.IOException: The
authentication or decryption has failed. ---> System.IO.IOException: The
authentication or decryption has failed. --->
Mono.Security.Protocol.Tls.TlsException: The authentication or decryption has failed.
Mon code est le suivant; La classe MainClass dans android appelle la classe de base, qui appelle cette classe de service.
Les requêtes HttpClient fonctionnent lorsque l'API et non utilise HTTPS, mais renvoie cette erreur chaque fois que j'utilise une API sur laquelle HTTPS est activé.
J'utilise également une bibliothèque de classes portable pour stocker du code, donc l'utilisation de HttpWebRequest pour les requêtes Web n'est pas possible.
J'ai aussi essayé;
ServicePointManager.ServerCertificateValidationCallback += (o, certificate, chain, errors) => true;
Et;
System.Security.Cryptography.AesCryptoServiceProvider b = new System.Security.Cryptography.AesCryptoServiceProvider();
Dans mon application classe OnCreate (android).
J'ai également changé l'implémentation de HttpClient en AndroidClientHandler, en changeant l'implémentation de SSL/TLS en 1.1. Avec essayer cela sur un émulateur et un appareil.
Quelqu'un a-t-il des conseils?
Avez-vous pu résoudre ce problème? J'ai rencontré le même problème et la modification du projet Android a fonctionné pour moi. Sous Android Options> Avancé, j'ai mis l'implémentation HttpClient à Android et l'implémentation SSL/TLS à Native TLS 1.2+ – nthpixel
Je recevais aussi la même erreur ci-dessus @Yanbin Hu bonne solution et en plus de changer l'implémentation du client HTTP de Default à Android natif aussi modification de l'implémentation SSL/TLS de la valeur par défaut à - Native TLS 1.2+ - alors cela a fonctionné pour moi. –