Debido a que desde una aplicación Windows 8 no podia usar PostAsJsonAsync, tuve que buscar otras alternativas. En este caso la mejor fue el uso de PostAsync. Para usarla debemos hacer lo siguiente:
1. Crear un cliente Http
var client = new HttpClient();
2. Configurar el contentType
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(“application/json”));
3. Crear una Uri.
var requestUrl = new Uri(“http://localhost:81/Api/Sync/Contenido”);
4. crear un httpContent, en este caso de tipo StringContent
var content = new StringContent(JsonConvert.SerializeObject(registros), Encoding.UTF8, “application/json”);
5. Usamos el PostAsync con la uri y el contenido
var response = client.PostAsync(new Uri(string.Format(UrlBase, Post, metodo)), content).Result;
6. Por último tomamos la respuesta (un string con formato Json).
response.Content.ReadAsStringAsync().Result;
Ej.
private string LlamarServicioSincronizacionPost(string metodo, List<Registro> registros)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(“application/json”));
var content = new StringContent(JsonConvert.SerializeObject(registros), Encoding.UTF8, “application/json”);
var response = client.PostAsync(new Uri(“http://localhost:81/Api/Sync/Contenido”), content).Result;
return response.Content.ReadAsStringAsync().Result;
}