Comment utiliser WebRequest pour accéder à un site crypté SSL en utilisant https?

J’écris un programme qui lit le contenu à partir d’une URL fournie par l’utilisateur. Mon problème est dans le code qui va quelque chose comme ça:

Uri uri = new Uri(url); WebRequest webRequest = WebRequest.Create(uri); WebResponse webResponse = webRequest.GetResponse(); ReadFrom(webResponse.GetResponseStream()); 

Et cela se casse si l’ URL fournie est une URL “https: //”. Quelqu’un peut-il m’aider à modifier ce code pour qu’il fonctionne avec le contenu crypté SSL. Merci.

Vous le faites correctement, mais les utilisateurs peuvent fournir des URL à des sites sur lesquels des certificates ssl non valides sont installés. Vous pouvez ignorer ces problèmes de cert si vous insérez cette ligne avant de faire la requête Web:

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

où AcceptAllCertifications est défini comme

 public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificateion, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; } 

Ce lien vous intéressera: http://msdn.microsoft.com/en-us/library/ds8bxk2a.aspx

Pour les connexions http, les classes WebRequest et WebResponse utilisent SSL pour communiquer avec les hôtes Web prenant en charge SSL. La décision d’utiliser SSL est prise par la classe WebRequest, en fonction de l’URI fournie. Si l’URI commence par “https:”, SSL est utilisé; si l’URI commence par “http:”, une connexion non cryptée est utilisée.

Celui-ci a travaillé pour moi:

 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;