【发布时间】:2020-11-14 09:36:57
【问题描述】:
我正在尝试从网上下载 PDF 文件。下载的文件是 HTML 文件(无法用 Adobe Reader 打开)。下载完成,结果为 200。
string tempFile = System.IO.Path.GetTempFileName();
tempFile = System.IO.Path.ChangeExtension(tempFile, "pdf");
HttpResponseMessage msg;
using (HttpClient client = new HttpClient())
{
msg = await client.GetAsync($"https://www.anaf.ro/StareD112/ObtineRecipisa?numefisier=217776607.pdf");
if (msg.IsSuccessStatusCode)
{
using (var file = File.Create(tempFile))
{
var contentStream = await msg.Content.ReadAsStreamAsync();
await contentStream.CopyToAsync(file);
await file.FlushAsync();
}
}
}
下载的文件有以下内容:
<!DOCTYPE html><html><head><meta http-equiv="Pragma" content="no-cache"/><meta http-equiv="Expires" content="-1"/><meta http-equiv="CacheControl" content="no-cache"/><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><link rel="shortcut icon" href="data:;base64,iVBORw0KGgo="/><script>(function(){window["bobcmn"] = "111111101...})();</script><script type="text/javascript" src="/TSPD/08b919fd7aab2000e3f4522c0108677748c289d7a5e2904fcfef59fb022a19a5fd44f0a0664ad54a?type=10"></script><noscript>Please enable JavaScript to view the page content.<br/>Your support ID is: 10865965003120525066.</noscript>
你能告诉我我做错了什么吗?
【问题讨论】:
-
你能告诉我我做错了什么吗?没什么...文件是 HTML 文件而不是 pdf - 它可能是某种防止数据抓取的保护跨度>
-
我的猜测是您没有点击正确的 URL,但可能没有可用的 URL 可以简单地将文件流式传输给您。您使用的 URL 看起来好像指向一个 HTML 文件。如果当您在浏览器中访问它时,它会将 PDF 流式传输给您,那么就是页面本身连接到文件服务器(或启动 PDF 生成过程)。
-
如果您在浏览器中尝试示例中的链接,您将能够下载可以使用 Adobe Acrobat Reader DC 阅读的 PDF 文件。我从该链接通过代码下载的文件是最初问题陈述中所附的文件。直到 1 天前,代码才能正确下载 PDF 文件。我假设服务器发生了一些变化,但我不知道。