I would like to download a file using VB.NET (preferably) or C# via HTTPS.
I have this code to download a file over plain HTTP:
Dim client As WebClie
You just need to point that address to your HTTPS resource and to inform your credential:
client.Credentials = new NetworkCredential("username", "password");
client.DownloadFile("https://your.resource.here", @"localfile.jog")
You're talking about how to log into a site protected by a HTML form login. I wrote this code sometime ago and you could to adapt it to login into your remote site: Orkut Login Code
Things you need to keep in mind:
__EVENTTARGET
and __EVENTARGUMENT
values, as they're required to process your login postback. If it's not, skip this step.CookieContainer
. It keeps your login cookie, so subsequent calls uses that authenticated context.You need to add a certificate validator:
// You need to call it only once in a static constructor or multiple times there is no problem
ServicePointManager.ServerCertificateValidationCallback = ValidateCertificate;
private static bool ValidateCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
In VB:
ServicePointManager.ServerCertificateValidationCallback = AddressOf ValidateCertificate
Dim client As WebClient = New WebClient()
'...
'Your code
Private Shared Function ValidateCertificate(sender As Object, certificate As X509Certificate, chain As X509Chain, sslPolicyErrors As SslPolicyErrors) As Boolean
return True
End Function
Try something like this
WebClient wc = new WebClient();
wc.UseDefaultCredentials = false;
CredentialCache creds = new CredentialCache();
creds.Add(new Uri(url), "Basic",new NetworkCredential(username, password, domain));
wc.Credentials = creds;
wc.Headers.Add(HttpRequestHeader.UserAgent,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;");
//wc.Headers["Accept"] = "/";
wc.DownloadFile(url,localpath);