C# HttpClient:“;HttpRequestException:发送请求时出错;
我试图使用HttpClient获取图像,但出现以下错误: HttpRequestException:发送请求时出错 使用WebClient和DownloadData方法,效果很好C# HttpClient:“;HttpRequestException:发送请求时出错;,c#,.net-core,C#,.net Core,我试图使用HttpClient获取图像,但出现以下错误: HttpRequestException:发送请求时出错 使用WebClient和DownloadData方法,效果很好 var cookieContainer = new CookieContainer(); using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer }) using (var client = new HttpCli
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的等价物是什么?这里的问题可能是调用
client.GetByteArrayAsync时没有正确处理等待的数据
解决办法是:
var res = await client.GetByteArrayAsync(url);
或
提供更多数据。客户端对象的其他属性是什么?停止在异步调用上使用.Result
和.Wait()
。等待答复。请看,控制台应用程序有什么不同吗?如果我使用await,主线程会发生什么?在控制台应用程序中,最好使用C#7.1,这样就可以使用异步main方法。好的,它可以工作,但我不知道为什么。你能解释一下吗?为什么我不能只使用GetByteArrayAsync的.Result after?因为它是异步的,在您请求结果时它不在那里,是的,它没有。我建议您学习更多关于异步的知识并等待
byte[] arr;
client.GetByteArrayAsync(url).ContinueWith((x) => arr = x.Result);