Saltar al contenido

HttpClient no tiene una definición para GetJsonAsync

Solución:

A partir de la versión preliminar 8, necesita:

<PackageReference Include="Microsoft.AspNetCore.Blazor.HttpClient" Version="3.0.0-preview8.19405.7" PrivateAssets="all" />

NOTA: Esto era correcto en ese momento, pero a partir de la versión 3.1.0 de Blazor, esto puede haber cambiado nuevamente, vea la respuesta de @JohnB a continuación.

Gran pregunta. Y supongo que la respuesta de Darrell (y las demás) fue 100% correcta a partir de la versión 3.0.0 (vista previa de Blazor WebAssembly).

Sin embargo, en cuanto a la versión 3.1.301, creo que la ubicación del paquete ha cambiado.

Actualmente, el espacio de nombres es: System.Net.Http.Json

Eso te dará acceso a: HttpClientJsonExtensions

R. Si desea poner ese código en una clase separada dentro de su proyecto Blazor WebAssembly, todo lo que necesita es poner esto en la parte superior de su archivo de clase:

using System.Net.Http; // for HttpClient
using System.Net.Http.Json; // for HttpClientJsonExtensions

B. Si desea poner esa clase en un proyecto separado (biblioteca .NET Core), debe agregar el paquete NuGet también:

Paquete NuGet: System.Net.Http.Json

Entonces puedes usarlo en tu clase como en el siguiente ejemplo. Obviamente, estos métodos de extensión están haciendo serialización, pero lo interesante es que el paquete no depende de Newtonsoft.Json porque usa el nuevo System.Text.Json en lugar de.

using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;

namespace MyClassLibrary
{
    public class MyClass
    {
        public async Task MyMethod()
        {
            string baseAddress = "http://localhost:57012/";
            var httpClient = new HttpClient() { BaseAddress = new Uri(baseAddress) };
            var myPocos = await httpClient.GetFromJsonAsync<MyPoco[]>("api/mypocos");

            foreach (var myPoco in myPocos)
                Console.WriteLine($"Id: {myPoco.Id}, Name: {myPoco.Name}");
        }
    }

    public class MyPoco
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}
  • Artículo sobre System.text.json VS Newtonsoft.json versus Utf8Json.

Simplemente descargue el paquete Microsoft.AspNetCore.Blazor.HttpClient.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *