【发布时间】:2021-05-27 23:07:14
【问题描述】:
我正在尝试使用 HttpClient 获取图像,但出现此错误:
HttpRequestException: 发送请求时出错
将 WebClient 与 DownloadData 方法一起使用,效果很好。
var cookieContainer = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
using (var client = new HttpClient(handler))
{
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36");
client.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36");
client.DefaultRequestHeaders.Add("Accept-Language", "pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4");
client.DefaultRequestHeaders.Add("Upgrade-Insecure-Requests", "1");
client.GetAsync("cookieGenerateUrl").Wait();
client.DefaultRequestHeaders.Remove("Accept");
client.DefaultRequestHeaders.Add("Accept", "image/webp,image/apng,image/*,*/*;q=0.8");
var imagem = client.GetByteArrayAsync(imageUrl).Result;
}
HttpClient 类上的 WebClient.DownloadData 等价于什么?
【问题讨论】:
-
提供更多数据。客户端对象的其他属性是什么?
-
停止在异步调用中使用
.Result和.Wait()。等待回复。请参阅Async/Await - Best Practices in Asynchronous Programming。 -
@mason 控制台应用程序有什么不同吗?如果我使用await,主线程会发生什么?
-
在控制台应用程序中,最好使用 C# 7.1,这样您就可以使用异步 main 方法。