Для .NET Core вещи немного больше связаны. GZipStream
нужен, поскольку есть не свойство (как в письменной форме) для AutomaticCompression
Рассмотрим следующий пример: GET
var req = WebRequest.CreateHttp(uri);
/*
* Headers
*/
req.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate";
/*
* Execute
*/
try
{
using (var resp = await req.GetResponseAsync())
{
using (var str = resp.GetResponseStream())
using (var gsr = new GZipStream(str, CompressionMode.Decompress))
using (var sr = new StreamReader(gsr))
{
string s = await sr.ReadToEndAsync();
}
}
}
catch (WebException ex)
{
using (HttpWebResponse response = (HttpWebResponse)ex.Response)
{
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
string respStr = sr.ReadToEnd();
int statusCode = (int)response.StatusCode;
string errorMsh = $"Request ({url}) failed ({statusCode}) on, with error: {respStr}";
}
}
}
я думаю Рик Стрэхл должно быть неправильным. Вы сами пробовали? – Keltex
спасибо - просто пытаясь понять вещи, можете ли вы сказать мне, если это правильно? (a) Если вы НЕ добавляете эту строку «AcceptEncoding», то - при загрузке несжатого файла => работает FINE - если вы загрузите сжатый файл => ISSUE (загрузите файл, но будете выглядеть коррумпированными, так как не был несжатым) (b) если вы добавили эту строку «AcceptEncoding», то: - если вы загружаете несжатый файл => все еще работает FINE - если вы загружаете сжатый файл => отлично работает (будет несжатый) Правильно ли это? – Greg
@Greg Ни один из вариантов. Вторая строка заключается не в загрузке файлов, которые, возможно, уже сжаты (т. Е. Zip-файлы), а в загрузке веб-ресурсов, которые могут быть сжаты по требованию (т. Е. Html-файлы). Если вы не поместите вторую строку, хорошо выполненный веб-сервер не отправит вам сжатые файлы вообще. Если веб-сервер имеет возможность сжимать файлы, он будет работать, только если вы поместите вторую строку. –