HttpClient no admite el método PostAsJsonAsync C#
Estoy intentando llamar a una API web desde mi aplicación web. Estoy usando .Net 4.5 y mientras escribo el código aparece el error HttpClient
que no contiene un PostAsJsonAsync
método de definición.
A continuación se muestra el código:
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' no contiene una definición para 'PostAsJsonAsync' y no se pudo encontrar ningún método de extensión 'PostAsJsonAsync' que acepte un primer argumento del tipo 'System.Net.Http.HttpClient' (¿falta un ¿Usando directiva o una referencia de ensamblaje?)
Por favor echa un vistazo y aconséjame.
Sí, necesitas agregar una referencia a
System.Net.Http.Formatting.dll
Esto se puede encontrar en el área de ensamblajes de extensiones.
Una buena forma de lograrlo es agregando el paquete NuGetMicrosoft.AspNet.WebApi.Client
a su proyecto.
PostAsJsonAsync
ya no está en System.Net.Http.dll
(.NET 4.5.2). Puede agregar una referencia a System.Net.Http.Formatting.dll
, pero en realidad pertenece a una versión anterior. Tuve problemas con esto en nuestro servidor de compilación TeamCity, estos dos no cooperaban juntos.
Alternativamente, puede reemplazarlo PostAsJsonAsync
con una PostAsync
llamada, que es solo parte del nuevo 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;
Tenga en cuenta que JavaScriptSerializer
está en el espacio de nombres: System.Web.Script.Serialization
.
Tendrás que agregar una referencia de ensamblaje en tu csproj:System.Web.Extensions.dll
Consulte https://code.msdn.microsoft.com/windowsapps/How-to-use-HttpClient-to-b9289836