I'm making http
request using HttpWebRequest
client
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestString);
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
request.Method = "GET";
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
public void GetResponseCallback(IAsyncResult asynchronousResult)
{
HttpWebResponse response = null;
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Console.WriteLine(response.Headers["Content-Encoding"]);
if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.Moved)
{
Stream inputStream = response.GetResponseStream();
StreamReader stream = new StreamReader(inputStream);
string responseString = stream.ReadToEnd();
}
}
On Apache
settings gzip
compression is enabled and working normally because when making request to the same url
from chrome browser I can see content-encoding
in response Headers. Please see the attached screenshot.
But when I make the same request using the above provided code Content-Encoding
key exists in headers but it's value is empty string.
Why content-encoding
value is missing in my response header?
Here is the response headers string
Headers = {Connection: keep-alive Vary: Accept-Encoding Content-Encoding: Access-Control-Allow-Origin: * Content-Length: 36954 Content-Type: text/html; charset=UTF-8 Date: Fri, 18 Sep 2020 11:31:25 GMT Server: nginx/1.10.2 X-Powered-By: PHP/5.3.3 }
In case anyone else meets the same problem. In my case the prblem was in line
I've changed it to
It's strange to me, because my project .Net version is 4.7.1 However now it works normally.