Como fazer download de uma página, via HTTPWebRequest, que exija certificado Digital (SSL / HTTPS)


Olá Pessoal,

Tive a necessidade de baixar fotos e documentos de uma página de internet protegido por certificado digital. Eu possuo o Certificado de Cliente necessário, mas não sabia como fazer o download.



Vejo o código abaixo empacotado num extension method:

public static byte[] DownloadData(this System.Net.WebClient w, string url, X509CertificateCollection clientCertificates)
{
WebRequest req = WebRequest.Create(url);
req.PreAuthenticate = true;
req.UseDefaultCredentials = true;

HttpWebRequest reqWeb = (HttpWebRequest)WebRequest.Create(url);
reqWeb.ClientCertificates = clientCertificates;
reqWeb.PreAuthenticate = true;
WebResponse response = reqWeb.GetResponse();

using (BinaryReader br = new BinaryReader(response.GetResponseStream()))
{
   int buffer = 1024;
   int read;
   List<byte> donwloadedFile = new List<byte>();
   byte[] byteArray = new byte[buffer];
   do

   {
      read = br.Read(byteArray, 0, buffer);
      for (int i = 0; i < read; i++)
      {
         donwloadedFile.Add(byteArray[i]);
      }
   } while (read != 0);

   return donwloadedFile.ToArray<byte>();
}

}

Nenhum comentário:

Postar um comentário