serialize newtonsoft net c# asp.net wcf asp.net-web-api wcf-web-api

c# - newtonsoft - POSTING JsonObject con HttpClient desde la API web



newtonsoft json serialize vb net (4)

Estoy intentando JsonObject un JsonObject usando HttpClient desde Web API. No estoy muy seguro de cómo hacerlo y no puedo encontrar mucho en el camino del código de muestra.

Esto es lo que tengo hasta ahora:

var myObject = (dynamic)new JsonObject(); myObject.Data = "some data"; myObject.Data2 = "some more data"; HttpClient httpClient = new HttpClient("myurl"); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = httpClient.Post("", ???);

Creo que necesito lanzar mi JsonObject como StreamContent pero me estoy colgando en ese paso.


Con la nueva versión de HttpClient y sin el paquete WebApi sería:

var content = new StringContent(jsonObject.ToString(), Encoding.UTF8, "application/json"); var result = client.PostAsync(url, content).Result;

O si lo quieres asincrónico:

var result = await client.PostAsync(url, content);



La forma más fácil es usar un StringContent , con la representación JSON de su objeto JSON.

httpClient.Post( "", new StringContent( myObject.ToString(), Encoding.UTF8, "application/json"));


Si usa Newtonsoft.Json:

using Newtonsoft.Json; using System.Net.Http; using System.Text; public static class Extensions { public static StringContent AsJson(this object o) => new StringContent(JsonConvert.SerializeObject(o), Encoding.UTF8, "application/json"); }

Ejemplo:

var httpClient = new HttpClient(); var url = "https://www.duolingo.com/2016-04-13/login?fields="; var data = new { identifier = "username", password = "password" }; var result = await httpClient.PostAsync(url, data.AsJson())