我试图从https网站下载pdf文件,但它不起作用。我是C#的新手,所以进行了一些研究,发现了一个简单的代码。更糟糕的是,我得到的例外是非常通用的。请帮助。
function get_date($timestamp)
{
$the_date = date('l jS \of F Y \a\t G:i:s A', $timestamp);
return $the_date;
}
例外情况: 类型为#System; Net.WebException'的未处理异常发生在System.dll中 附加信息:远程服务器返回错误:(403)禁止。
答案 0 :(得分:2)
服务器正在使用您的用户代理标头检查您是否是真实用户。它还要求您指定所需的mime类型。这不是一般 C#的东西,它只是你要连接的主机(nseindia.com)。
这适合我。
static void Main(string[] args)
{
string file_ = "https://www.nseindia.com/content/circulars/CMPT34469.pdf";
string path_ = @"E:\RSR\Office\EEP\FileDownloader\output\Hello_World.pdf";
WebClient wc_ = new WebClient();
wc_.Headers.Add(HttpRequestHeader.UserAgent, "Other");
wc_.Headers.Add(HttpRequestHeader.Accept, "application/pdf");
wc_.DownloadFile(file_, path_);
}
答案 1 :(得分:-1)
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
static void Main(string[] args)
{
string file_ = "https://www.nseindia.com/content/circulars/CMPT34469.pdf";
string path_ = @"E:\RSR\Office\EEP\FileDownloader\output\Hello_World.pdf";
WebClient wc_ = new WebClient();
wc_.Headers.Add(HttpRequestHeader.UserAgent, "Other");
wc_.Headers.Add(HttpRequestHeader.Accept, "application/pdf");
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
wc_.DownloadFile(file_, path_);
}