ejemplo create c# webrequest

create - webrequest stream c#



¿Cómo uso WebRequest para acceder a un sitio encriptado SSL usando https? (3)

Este enlace le interesará: http://msdn.microsoft.com/en-us/library/ds8bxk2a.aspx

Para las conexiones http, las clases WebRequest y WebResponse usan SSL para comunicarse con los servidores web que admiten SSL. La decisión de usar SSL la toma la clase WebRequest, basada en el URI que se le da. Si el URI comienza con "https:", se usa SSL; si el URI comienza con "http:", se utiliza una conexión no encriptada.

Estoy escribiendo un programa que lee el contenido de una URL proporcionada por el usuario. Mi problema está en el código que dice algo como esto:

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

Y esto se está rompiendo si la url proporcionada es una URL "https: //". ¿Alguien puede ayudarme a cambiar este código para que funcione con contenido cifrado SSL? Gracias.


Este trabajó para mí:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;


Lo está haciendo de la manera correcta, pero los usuarios pueden proporcionar URL a los sitios que tienen instalados certs SSL no válidos. Puede ignorar esos problemas de certificación si coloca esta línea antes de realizar la solicitud web real:

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

donde AcceptAllCertifications se define como

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