【发布时间】:2019-01-10 12:12:41
【问题描述】:
想要在不使用 Web 客户端的情况下下载 zip 文件,因为出现错误“远程服务器返回错误:(403) Forbidden。”在将正确的标头传递给请求之后。
需要 webclient 和 httpwebrequest 的替代方案。
提前致谢!
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.Method = "GET";
HttpWebResponse WebResponse = (HttpWebResponse)request.GetResponse();
using (HttpClient client = new HttpClient())
{
try
{
HttpResponseMessage response = await client.GetAsync(URL);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
// Above three lines can be replaced with new helper method below
// string responseBody = await client.GetStringAsync(uri);
Console.WriteLine(responseBody);
}
catch (HttpRequestException e)
{
Console.WriteLine("\nException Caught!");
Console.WriteLine("Message :{0} ", e.Message);
}
}
【问题讨论】:
-
无论您使用哪种方法都会收到 403 响应,这表明您要么没有传递正确的凭据,要么没有正确传递它们。如果您可以发布您的代码(当然不包括任何敏感信息)以帮助确定它是哪一个并确定问题是否是两者中的后者,这将有所帮助。
-
您应该向我们展示“将正确的标头传递给请求”。 WebClient 和 WebRequest 是旧的但没有损坏。错误是你的。
-
发布的代码。请检查并告诉我
-
您根本没有设置任何标题。请参阅 WebCLient.Credentials 并了解如何使用它们。
-
Google:“你使用的 httpclient 错误”。
标签: c# web-scraping