title: Returning HttpResponseMessage from MVC HttpPost, with content of JSON
body: <p>My first post on StackOverflow but I am a long time lurker!  Hopefully I canget some help on an issue I'm working on.</p>
  
  <p>I am trying to achieve the following.  The code below is setting the content to be a JSON string which contains the following...</p>
  
  <pre><code>{
    "access_token": "value1",
    "expires_in": "value2",
    "client_in": null,
    "scope": "value3"
  }
  </code></pre>
  
  <p>and here is the code which sends the HttpResponseMessage back to the client.</p>
  
  <pre><code>    [HttpPost]
      public HttpResponseMessage token(string grant_type,
                                       string code,
                                       string client_id,
                                       string client_secret,
                                       string redirect_uri)
      {
          WpOAuth2TokenRetValSuccessVM OA2_Success = new WpOAuth2TokenRetValSuccessVM();
  
          OA2_Success.access_token = "value1";
          OA2_Success.client_in = client_id;
          OA2_Success.expires_in = "value2";            //...The number of seconds left in the lifetime of the token
          OA2_Success.scope = "value3";                 //...Each access token can have only 1 scope
  
          HttpResponseMessage response = new HttpResponseMessage();
          response.StatusCode = HttpStatusCode.OK;
          string strJson = JsonConvert.SerializeObject(OA2_Success, Newtonsoft.Json.Formatting.Indented);
  
          StringContent n = new StringContent(strJson, Encoding.UTF8, "application/json");
          response.Content = n;
  
          return response;
      }
  </code></pre>
  
  <p>Now then, on the client side for the life of me I cannot get the JSON string back out of the content.  Here is the code that I am using to read the content.</p>
  
  <pre><code>        HttpClient httpClient = new HttpClient();
          httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  
          var postData = new List&lt;KeyValuePair&lt;string, string&gt;&gt;();
          postData.Add(new KeyValuePair&lt;string, string&gt;(str_KEY1, str_VALUE1));
          postData.Add(new KeyValuePair&lt;string, string&gt;(str_KEY2, str_VALUE2));
          postData.Add(new KeyValuePair&lt;string, string&gt;(str_KEY3, str_VALUE3));
          postData.Add(new KeyValuePair&lt;string, string&gt;(str_KEY4, str_VALUE4));
          postData.Add(new KeyValuePair&lt;string, string&gt;(str_KEY5, str_VALUE5));
  
          HttpContent content = new FormUrlEncodedContent(postData);
  
          httpClient.PostAsync(strURI, content).ContinueWith(requestTask =&gt;
          {
              // Get HTTP response from completed task.
              HttpResponseMessage response = requestTask.Result;
  
              // Check that response was successful or throw exception
              response.EnsureSuccessStatusCode();
  
              // Read response asynchronously as string and write out
              var responseValue = response.Content.ReadAsStringAsync();
              responseValue.Wait();
  
              string n = responseValue.Result;
  
              var i = 0;
          });
  </code></pre>
  
  <p>Now then, string n's content is as follows, but how do I get at the JSON???
  Thanks all.</p>
  
  <pre><code>StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StringContent, Headers:
  {
    Content-Type: application/json; charset=utf-8
  }
  </code></pre>