c# - 如何在asp.net c#中根据URL获取https文件

标签 c# asp.net .net

在我的要求中,我需要从 URL 获取文件。我试过了,但它总是抛出一个禁止的错误。请尝试解决这个问题。请查看我的代码。

var webRequest = WebRequest.Create("https://www.fda.gov/ucm/groups/fdagov-public/@fdagov-drugs-gen/documents/document/ucm509432.pdf");  
using (var response = webRequest.GetResponse())
   using (var content = response.GetResponseStream())
      using (var reader = new StreamReader(content))
      {
         var strContent = reader.ReadToEnd();
      }

最佳答案

当我查看来自服务器的响应内容时,我意识到它声明客户端需要支持 TLSv1.2。

要启用 TLSv1.2 支持,请在创建 HttpWebRequest 类之前添加以下行:(感谢 BugFinder 提供的直接枚举值提示)

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

我发布了完整的源代码。

您还可以看到,我测试了向服务器发送一些 header 以查看缺少其中一个 header 是否是问题所在:

class Program
{
    static void Main(string[] args)
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

        HttpWebRequest webRequest = HttpWebRequest.Create("https://www.fda.gov/ucm/groups/fdagov-public/@fdagov-drugs-gen/documents/document/ucm509432.pdf") as HttpWebRequest;
        webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko";
        webRequest.Accept = "text/html, application/xhtml+xml, */*";
        webRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
        webRequest.Headers.Add("Accept-Language", "tr-TR");
        webRequest.Headers.Add("DNT", "1");

        using (var
             response = webRequest.GetResponse())
        using (var content = response.GetResponseStream())
        using (var reader = new StreamReader(content))
        {
            var strContent = reader.ReadToEnd();
        }
    }
}

关于c# - 如何在asp.net c#中根据URL获取https文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46886011/

相关文章:

c# Wpf 将枚举绑定(bind)到组合框

c# - Entity Framework 和.NET 的一对一关系

c# - 打开新表格时锁定以前的表格

asp.net - 内存不足 - 无限循环 - ASP.NET AJAX 框架

c# - 数据类型和古怪的结果 PHP/C#/WinForms

c# - 如何使用 C#/.NET 将日期时间转换为时间戳(忽略当前时区)

c# - Azure 存储文件强制下载到浏览器

javascript - 如何知道 anchor 位于文本或图像上?

.net - SandCaSTLe 帮助文件生成器 : Search not working

c# - 如何使用 C# .NET 4.5 将文件从 ZIP 存档读取到内存而不先将其解压缩到文件?