instal - ¿Dónde está el método PostAsJsonAsync en ASP.NET Core?
net core 3 (5)
Eso no es parte del proyecto Core de ASP.NET. Sin embargo puedes proceder con:
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://myurl/api");
string json = JsonConvert.SerializeObject(myObj);
request.Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
HttpClient http = new HttpClient();
HttpResponseMessage response = await http.SendAsync(request);
if (response.IsSuccessStatusCode)
{
}
else
{
}
Estaba buscando el método de extensión PostAsJsonAsync
en el núcleo de ASP.NET. Según el artículo here está disponible en Microsoft.AspNet.WebApi.Client
ensamblaje Microsoft.AspNet.WebApi.Client
. Sin embargo, aunque Microsoft ha cambiado todos los nombres de ensamblajes de Microsoft.AspNet
a Microsoft.AspNetCore
para ser más específico con el marco de .Net Core. Pero no pude encontrar Microsoft.AspNetCore.WebApi.Client
¿Dónde está el método de extensión PostAsJsonAsync
en el núcleo de ASP.NET?
Esto es teórico ...
public static async System.Threading.Tasks.Task<HttpResponseMessage> PostJsonAsync(object dataclass, string Url)
{
using (var client = new HttpClient())
return await client.PostAsync(Url, new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(dataclass), System.Text.Encoding.UTF8, "application/json"));
}
...Dedos cruzados.
Esto llega tarde, pero creo que puede ayudar a alguien más adelante. Por lo tanto, los *AsJsonAsync()
no forman parte del proyecto Core de ASP.NET. He creado un paquete que le da la funcionalidad. Puedes conseguirlo en Nuget.
https://www.nuget.org/packages/AspNetCore.Http.Extensions
using AspNetCore.Http.Extensions;
...
HttpClient client = new HttpClient();
client.PostAsJsonAsync(''url'', payload);
No merezco ningún crédito por esto. Echa un vistazo a la respuesta @ danroth27 en el siguiente enlace.
Utiliza un método de extensión. Código como abajo. (Copiado del enlace github anterior). Lo estoy usando en .Net Core 2.0.
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace TestingControllersSample.Tests.IntegrationTests
{
public static class HttpClientExtensions
{
public static Task<HttpResponseMessage> PostAsJsonAsync<T>(
this HttpClient httpClient, string url, T data)
{
var dataAsString = JsonConvert.SerializeObject(data);
var content = new StringContent(dataAsString);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return httpClient.PostAsync(url, content);
}
public static async Task<T> ReadAsJsonAsync<T>(this HttpContent content)
{
var dataAsString = await content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(dataAsString);
}
}
}
Solo actualice sus paquetes Nuget en SDK .Net Core 2.1 o en el último .Net Core SDK y estará funcionando.