Я хочу сжать свои HTTP-ответы для клиента, который его поддерживает. Я использую C # Webserver .
Вот код, используемый для отправки стандартного ответа:
IHttpClientContext context = (IHttpClientContext)sender;
IHttpRequest request = e.Request;
string responseBody = "This is some random text";
IHttpResponse response = request.CreateResponse(context);
using (StreamWriter writer = new StreamWriter(response.Body))
{
writer.WriteLine(responseBody);
writer.Flush();
response.Send();
}
Код выше работает нормально. Теперь я добавил поддержку gzip ниже. Когда я тестирую его с браузером, который поддерживает gzip или пользовательский метод, он возвращает пустую строку. Я уверен, что упускаю что-то простое, но я просто не могу найти это ...
IHttpClientContext context = (IHttpClientContext)sender;
IHttpRequest request = e.Request;
string acceptEncoding = request.Headers["Accept-Encoding"];
string responseBody = "This is some random text";
IHttpResponse response = request.CreateResponse(context);
if (acceptEncoding != null && acceptEncoding.Contains("gzip"))
{
byte[] bytes = ASCIIEncoding.ASCII.GetBytes(responseBody);
response.AddHeader("Content-Encoding", "gzip");
using (GZipStream writer = new GZipStream(response.Body, CompressionMode.Compress))
{
writer.Write(bytes, 0, bytes.Length);
writer.Flush();
response.Send();
}
}
else
{
using (StreamWriter writer = new StreamWriter(response.Body))
{
writer.WriteLine(responseBody);
writer.Flush();
response.Send();
}
}