title: HttpResponseMessage.Content.ReadAsStreamAsync() vs HttpResponseMessage.Content.ReadAsStringAsync()
body: <pre><code>var request = new HttpRequestMessage(HttpMethod.Get, $&quot;api/Items&quot;);
  request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(&quot;application/json&quot;));
  
  using (var response = await _httpClient.SendAsync(request))
  {
     response.EnsureSuccessStatusCode();
     var stream = await response.Content.ReadAsStreamAsync();        
  
       using (var streamReader = new StreamReader(stream))
       {
         using (var jsonTextReader = new JsonTextReader(streamReader))
         {
           var jsonSerializer = new JsonSerializer();
           var data =  jsonSerializer.Deserialize&lt;Item&gt;(jsonTextReader);
         }
       }
  }
  </code></pre>
  <p>...</p>
  <pre><code>var request = new HttpRequestMessage(HttpMethod.Get, &quot;api/Items&quot;);
  request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(&quot;application/json&quot;));
  var response = await _httpClient.SendAsync(request);
  
  response.EnsureSuccessStatusCode();
  
  var content = await response.Content.ReadAsStringAsync();
  var data = JsonConvert.DeserializeObject&lt;List&lt;Item&gt;&gt;(content);
  </code></pre>
  <p>I've run this two examples and I'm curious what is the difference between them that always getting same result, ReadAsStreamAsync is much faster then ReadAsStringAsync.</p>