¿Cómo paso un objeto a HttpClient.PostAsync y lo serializo como un cuerpo JSON?

Estoy usandoSystem.Net.HttpEncontré varios ejemplos en la web. Logré crear este código para hacer unPOST solicitud:

public static string POST(string resource, string token)
{
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri(baseUri);
        client.DefaultRequestHeaders.Add("token", token);

        var content = new FormUrlEncodedContent(new[]
        {
             new KeyValuePair<string, string>("", "")
        });

        var result = client.PostAsync("", content).Result;
        string resultContent = result.Content.ReadAsStringAsync().Result;
        return resultContent;
    }
 }

Todo funciona bien. Pero supongamos que quiero pasar un tercer parámetro alPOST método, un parámetro llamadodata. El parámetro de datos es un objeto como este:

object data = new
{
    name = "Foo",
    category = "article"
};

¿Cómo puedo hacer eso sin crear elKeyValuePair? Mi phpRestAPI espere una entrada json, entonces elFormUrlEncodedContent debería enviar elraw json correctamente. ¿Pero cómo puedo hacer esto conMicrosoft.Net.Http? Gracias.

Respuestas a la pregunta(4)

Su respuesta a la pregunta