title: Universal app HttpClient header: how to disable some of the headers?
body: <p>A bit of background:
  I'm trying to "port" an android app to Windows Phone that calls a non-open web API. Since the API is not open or documented, I used Fiddler, run the app's android version, and snooped the API calls it made. </p>
  
  <p>I'm using Windows.Web.Http.HttpClient as the class of choice since it seems like this will be the class moving on instead of System.Net.Http.HttpClient. </p>
  
  <p>Here's the C# code excerpt that I use to generate an HTTP POST request:</p>
  
  <pre><code>HttpBaseProtocolFilter _httpFilter = new HttpBaseProtocolFilter();
  HttpClient _httpClient = new HttpClient(_httpFilter);                    
  _httpClient.DefaultRequestHeaders.AcceptEncoding.Clear();
  _httpClient.DefaultRequestHeaders.Accept.TryParseAdd("application/xml");
  _httpClient.DefaultRequestHeaders.AcceptLanguage.TryParseAdd("en");            
  _httpClient.DefaultRequestHeaders.Connection.TryParseAdd("Keep-Alive");
  _httpClient.DefaultRequestHeaders.Add("message-version", "1");
  _httpClient.DefaultRequestHeaders.UserAgent.TryParseAdd("Android|SAMSUNG-  SGH-I337|3.3.1"); 
  _httpClient.DefaultRequestHeaders.Cookie.TryParseAdd(cookie); //Some cookie values                                
  
  Uri uri = new Uri(SOMEURI);
  XDocument xd = new XDocument(STUFF_TO_BUILD_XML);
  string xd_str = string.Concat(xd.Declaration.ToString(), xd.ToString());
  xd_str = xd_str.Replace("\r\n", string.Empty);
  xd_str = xd_str.Replace("  ", string.Empty); 
  HttpRequestMessage req_msg = new HttpRequestMessage(HttpMethod.Post, uri);
  HttpStringContent strcnt = new HttpStringContent(xd_str);            
  req_msg.Content = strcnt;
  req_msg.Content.Headers.ContentType = new     Windows.Web.Http.Headers.HttpMediaTypeHeaderValue("text/xml; charset=UTF-8");
  req_msg.Headers.Host = new Windows.Networking.HostName(SOMEHOSTNAME);
  
  HttpResponseMessage rsp_msg = await _httpClient.SendRequestAsync(req_msg);
  </code></pre>
  
  <p>Here's the raw text Fiddler sees when making the API call using my code:</p>
  
  <pre><code>POST &lt;HTTPS endpoint&gt; HTTP/1.1
  Connection: Keep-Alive
  Accept-Encoding: gzip, deflate
  Host: &lt;hostname&gt;
  Cookie2: Version=1
  Accept: application/xml
  message-version: 1
  User-Agent: Android|SAMSUNG-SGH-I337|3.3.1
  Accept-Language: en
  Content-Length: 173
  Content-Type: text/xml; charset=UTF-8
  Cache-Control: no-cache
  Cookie: STR1=VAL1; STR2=VAL2
  
  &lt;MESSAGE_IN_XML&gt;
  
  --Response--
  HTTP/1.1 401 Unauthorized
  Server: Apache-Coyote/1.1
  X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1
  X-Frame-Options: SAMEORIGIN
  Transfer-Encoding: chunked
  Date: Fri, 03 Apr 2015 01:18:07 GMT
  
  0
  </code></pre>
  
  <p>Here's the raw text Fiddler sees when making request via Android app:</p>
  
  <pre><code>POST &lt;HTTPS endpoint&gt; HTTP/1.1
  Content-Type: text/xml; charset=UTF-8
  Connection: Keep-Alive
  accept: application/xml
  user-agent: Android|SAMSUNG-SGH-I337|3.4
  message-version: 1
  Accept-Language: en
  Content-Length: 173
  Host: &lt;hostname&gt;
  Cookie: STR1=VAL1; STR2=VAL2
  Cookie2: $Version=1
  
  &lt;MESSAGE_IN_XML&gt;
  
  --response--
  HTTP/1.1 200 OK
  Server: Apache-Coyote/1.1
  X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1
  X-Frame-Options: SAMEORIGIN
  Content-Type: application/xml;charset=utf-8
  Date: Fri, 03 Apr 2015 01:08:22 GMT
  Content-Length: 364
  
  &lt;MESSAGE_IN_XML&gt;
  </code></pre>
  
  <p>See, from Fiddler's output, the only difference I see is in the header, the Accept-Encoding and Cache-Control entries. Is there a way to NOT send them? Or am I missing something here?</p>