gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:23:05 25 4
gpt4 key购买 nike

在我的要求中,我需要从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com