Making an async HttpClient post request with data from FormCollection
asp.net-mvc-4, c#, dotnet-httpclient, formcollection
Solution
I'm not entirely sure what you're trying to do, but possibly converting the `FormCollection` to a dictionary and using the `FormUrlEncodedContent` class is what you're looking for.
e.g.:
var response = await httpClient.PostAsync("users",
new FormUrlEncodedContent(
body.
AllKeys.ToDictionary(
k => k, v => body[v])));
Problem
I am doing an Asp.Net MVC 4 project and am looking to an internal request (like a proxy) to our api service. This is what the index method looks like in my controller. I'm stuck at the PostAsync part. ``` [HttpPost] public async Task<ActionResult> Index(FormCollection body){ HttpClient httpClient = new HttpClient(); httpClient.BaseAddress = new Uri("http://myapi.com"); // posts to http://myapi.com/users var response = await httpClient.PostAsync("users", body); if(response.isSuccessStatusCode) return Json(new { status = true, url = response.Content.Url }); } ``` I want to pass my "application/x-form-urlencoded" "body" content to the PostAsync POST method. However, I get an error reading "body is not of type HttpContent". I can't cast or convert. What now? Let me know what I'm doing incorrectly here. Erik