62 votes

WebClient + HTTPS questions

Je suis actuellement à l'intégration avec un système créé par une 3ème partie. Ce système me demande d'envoyer une demande à l'aide de XML/HTTPS. La 3ème partie m'envoyer le certificat et je l'ai installé

J'utilise le code suivant:

using (WebClient client = new WebClient())
{
   client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");

   System.Text.ASCIIEncoding  encoding=new System.Text.ASCIIEncoding();
   var response = client.UploadData(address, "POST", encoding.GetBytes(msg));
}

Ce code renvoie la suivante WebException: La connexion sous-jacente a été fermée: impossible d'établir une relation de confiance pour le canal sécurisé SSL/TLS.

Mise à JOUR Parce que c'est un serveur de test, je suis en train de travailler contre, le certificat n'est pas approuvé et la validation échoue... Pour contourner ce test/debug de l'environnement de, créer un nouveau ServerCertificateValidationCallback

ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(bypassAllCertificateStuff);

et voici mon "faux" de rappel

private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
   return true;
}

Lire plus ici et ici

70voto

Koen Zomers Points 2419

La notation la plus courte du code pour permettre à tous les certificats est en fait :

Et fonctionne bien pour cette erreur. Inutile de dire que vous devez fournir une implémentation qui effectivement vérifie le certificat et décide basées sur les informations de certificat si la communication est sécuritaire. À des fins de test, utilisez au-dessus de la ligne de code.

8voto

atconway Points 4164

Pour la version VB.NET de la réponse initiale, vous pouvez y aller (convertisseurs ne fonctionnent pas bien lorsque nécessitant au fil des événements avec l’opérateur « AddressOf »). 1er code qui va avant d’utiliser un objet WebClient ou HttpWebRequest() :

.. le câblé et code de la méthode en hausse :

-1voto

César Torres Points 1

Essayez, ça marche :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X