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.