postasync postasjsonasync example c# json httpclient asp.net-web-api

example - postasjsonasync c#



HttpClient no admite el método PostAsJsonAsync C# (7)

Como ya se debatió, este método ya no está disponible desde .NET 4.5.2. Para ampliar la respuesta de Jeroen K puedes hacer un método de extensión:

public static async Task<HttpResponseMessage> PostAsJsonAsync<TModel>(this HttpClient client, string requestUrl, TModel model) { var serializer = new JavaScriptSerializer(); var json = serializer.Serialize(model); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); return await client.PostAsync(requestUrl, stringContent); }

Ahora puede llamar a client.PostAsJsonAsync("api/AgentCollection", user) .

Intento llamar a una aplicación web desde mi aplicación web. Estoy usando .net 4.5 y mientras escribo el código recibo un error HttpClient no contiene una definición del método PostAsJsonAsync

HttpClient client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:51093/"); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); var user = new Users(); user.AgentCode = 100; user.Remarks = "Test"; user.CollectionDate = System.DateTime.Today; user.RemittanceDate = System.DateTime.Today; user.TotalAmount = 1000; user.OrgBranchID = 101; var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;

y recibo el mensaje de error:

Error: ''System.Net.Http.HttpClient'' does not contain a definition for ''PostAsJsonAsync'' and no extension method ''PostAsJsonAsync'' accepting a first argument of type ''System.Net.Http.HttpClient'' could be found (are you missing a using directive or an assembly reference?)

Por favor, eche un vistazo y avísenme.


En lugar de escribir esta cantidad de código para hacer una simple llamada, puede usar uno de los contenedores disponibles a través de Internet.

He escrito uno llamado WebApiClient, disponible en NuGet ... ¡compruébalo!

http://webapiclient.azurewebsites.net


La referencia que falta es System.Net.Http.Formatting.dll . Pero la mejor solución es agregar el paquete NuGet Microsoft.AspNet.WebApi.Client para garantizar que la versión del formato dll funcionó con la versión .NET framework de System.Net.Http en mi proyecto.


Sé que esta respuesta es demasiado tarde, tuve el mismo problema y estaba agregando System.Net.Http.Formatting.Extension Nuget, después de comprobar aquí y allá encontré que se agrega Nuget pero el System.Net.Http.Formatting.dll no se agregó a las referencias, simplemente reinstalé el Nuget


Sí, necesita agregar una referencia a

System.Net.Http.Formatting.dll

Esto se puede encontrar en el área de ensamblados de extensiones.

Tenga en cuenta que una buena forma de lograr esto es agregar el paquete NuGet System.Net.Http.Formatting.Extension a su proyecto.


También tuve este problema en un proyecto que acababa de verificar desde el control de código fuente.

El síntoma fue el error descrito anteriormente y un triángulo de advertencia amarillo en una referencia a System.Net.Http.Formatting

Para solucionarlo, eliminé la referencia interrumpida y luego utilicé NuGet para instalar la última versión de Microsoft.AspNet.WebApi.Client .


PostAsJsonAsync ya no se encuentra en System.Net.Http.dll (.NET 4.5.2). Puede agregar una referencia a System.Net.Http.Formatting.dll , pero esto en realidad pertenece a una versión anterior. Me encontré con problemas con esto en nuestro servidor de compilación de TeamCity, estos dos no cooperaron juntos.

Alternativamente, puede reemplazar PostAsJsonAsync con una llamada PostAsync , que es solo parte de una nueva dll. Reemplazar

var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;

Con:

var response = client.PostAsync("api/AgentCollection", new StringContent( new JavaScriptSerializer().Serialize(user), Encoding.UTF8, "application/json")).Result;

Consulte https://code.msdn.microsoft.com/windowsapps/How-to-use-HttpClient-to-b9289836