title: Getting full response body from System.Net.WebRequest
body: <p>I'm using System.Net.WebRequest to get info from some API.
  When I get an error, the response contains only the basic HttpStatusCode and message, and not the full error returned.
  For comparison, running the same post data and headers in a tool such as POSTMAN will return the full error from that API.</p>
  
  <p><strong>I'm wondering if there is some property or way I can get the full error response??</strong></p>
  
  <p>Here is the code i'm running:</p>
  
  <pre><code>public HttpStatusCode GetRestResponse(
      string verb,
      string requestUrl,
      string userName,
      string password,
      out string receiveContent,
      string postContent = null)
  {
      var request = (HttpWebRequest)WebRequest.Create(requestUrl);
      request.Method = verb;
  
      if (!string.IsNullOrEmpty(userName))
      {
          string authInfo = string.Format("{0}:{1}", userName, password);
          authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
          request.Headers.Add("Authorization", "Basic " + authInfo);
      }
  
      if (!string.IsNullOrEmpty(postContent))
      {
          byte[] byteArray = Encoding.UTF8.GetBytes(postContent);
          request.ContentType = "application/json; charset=utf-8";
          request.ContentLength = byteArray.Length;
          var dataStream = request.GetRequestStream();
          dataStream.Write(byteArray, 0, byteArray.Length);
          dataStream.Close();
      }
  
      try
      {
          using (WebResponse response = request.GetResponse())
          {
              var responseStream = response.GetResponseStream();
              if (responseStream != null)
              {
                  var reader = new StreamReader(responseStream);
                  receiveContent = reader.ReadToEnd();
                  reader.Close();
  
                  return ((HttpWebResponse) response).StatusCode;
              }
          }
      }
      catch (Exception ex)
      {
          receiveContent = string.Format("{0}\n{1}\nposted content = \n{2}", ex, ex.Message, postContent);
          return HttpStatusCode.BadRequest;
      }
  
      receiveContent = null;
      return 0;
  }
  </code></pre>
  
  <p>When I generate a request that presents me with an error, I get in the error message: <code>The remote server returned an error: (400) Bad Request.</code> and no InnerException, and nothing else I can benefit from out of the exception.</p>
  
  <p>[Answer] @Rene pointed to the right direction and the proper response body can be acquired like this:</p>
  
  <pre><code>var reader = new StreamReader(ex.Response.GetResponseStream());
  var content = reader.ReadToEnd();
  </code></pre>