.NET 5 HttpClient 无法获取 html 内容页面 - http 500
Posted
技术标签:
【中文标题】.NET 5 HttpClient 无法获取 html 内容页面 - http 500【英文标题】:.NET 5 HttpClient cannot GET html content page - http 500 【发布时间】:2021-10-15 17:55:13 【问题描述】:我正在尝试使用 HttpClient 来获取页面的 html 内容。 尝试我用谷歌 URL 测试的方法,它正在工作,我收到了我的 html 页面的内容。 但是有了我想要的 url,就不可能得到内容。我每次都有一个返回码 http 500。 问题是,我可以使用 POSTMAN 甚至使用 python 获取文件的内容,但使用 .NET5 是不可能的
有人有想法吗? 提前谢谢你。
private static readonly HttpClient client = new HttpClient();
static async Task Main(string[] args)
try
HttpResponseMessage response = await client.GetAsync("https://www.naeu.playblackdesert.com/fr-FR/Adventure/Profile?profileTarget=tbXSK7e39Sb3U3yPi7UDjjSeXLzr0HZbr%2bvZQYvtEENKNEz6zPFwtpkvp0pIir%2fk%2fWk7JFLXKICyzqEBwajIrTCHQPFH4MRyBkor2fVeMAb8hNGoasy8HtBiHlcoWN1xRsmmYjVt6WbJg2ocvr%2fbsQk2sbjKeD5a7VqgreAH0ztzMvoFqk7Z%2fZ7L4USyu5Up");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
catch(HttpRequestException e)
Console.WriteLine("\nException Caught!");
Console.WriteLine("Message :0 ",e.Message);
【问题讨论】:
【参考方案1】:像这样指定用户代理。
client.DefaultRequestHeaders.Add("User-Agent", "C# console program");
在 HttpResponseMessage response = await client.GetAsync 行之前
【讨论】:
我用你推荐的值修改了标题,它可以工作 :) 但是如果我使用 API,我应该为我的“用户代理”设置什么值? 查看这里的文档developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent 一些服务器根据用户代理值提供不同的页面(数据),有些则没有。如果您不关心并且对服务器现在为您提供的内容感到满意,则可以保持原样。 @Kujima 如果这有效并且是答案,您能否将其标记为答案。谢谢以上是关于.NET 5 HttpClient 无法获取 html 内容页面 - http 500的主要内容,如果未能解决你的问题,请参考以下文章
HttpClient调用.net发布的带Windows NTML验证的webservice
[通用 Windows 平台] 中的 System.Net.Http.HttpClient 无法正常工作
从 HttpClient SendAsync 请求获取响应时出现无法解释的超时和延迟
在 c# (.net core) 中使用 httpclient 时无法建立 SSL 连接,但在 Postman 和 Browser 中有效