Estoy tratando de publicar un JsonObject
uso HttpClient
de la API web. No estoy muy seguro de cómo hacer esto 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 un StreamContent
pero estoy colgado en ese paso.
c#
asp.net
wcf
asp.net-web-api
wcf-web-api
marca
fuente
fuente
using
que yo: aspnetmonsters.com/2016/08/2016-08-27-httpclientwrongusing
vuelta a laStringContent
creación.var content = new StringContent(jsonObject.ToString(), Encoding.UTF8, "application/json")
que tuve que configurarcontent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
. Vea la respuesta a continuación para más detalles.La forma más fácil es usar a
StringContent
, con la representación JSON de su objeto JSON.fuente
Dependiendo de su versión .NET, también podría usar el
HttpClientExtensions.PostAsJsonAsync
método.https://msdn.microsoft.com/en-us/library/system.net.http.httpclientextensions.postasjsonasync.aspx
fuente
Si usa Newtonsoft.Json:
Ejemplo:
fuente
JsonConvert.SerializeObject
problemas con DateTimes ISO 8601 Tipo: Local o UTC ... hackered.co.uk/articles/…No tengo suficiente reputación para agregar un comentario sobre la respuesta de pomber, así que estoy publicando otra respuesta. Utilizando el enfoque de pomber, recibí una respuesta de "400 solicitudes incorrectas" de una API en la que estaba PUBLICANDO mi solicitud JSON (Visual Studio 2017, .NET 4.6.2). Finalmente, el problema se rastreó hasta que el encabezado "Content-Type" producido por StringContent () era incorrecto (consulte https://github.com/dotnet/corefx/issues/7864 ).
tl; dr
Use la respuesta de pomber con una línea adicional para establecer correctamente el encabezado de la solicitud:
fuente
"application/json"
alStringContent
constructor, ya que se establece explícitamente en lacontent.Headers.ContentType
propiedad resultante . Sin embargo, no he probado esto en código.application/json; charset=utf-8
.el código sobre él en vbnet:
Espero que esto ayude
fuente