我有这个代码注册 HttpClient
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddHttpClient("ServerAPI", client =>
client.BaseAddress = new Uri("http://localhost:xxxxx/"));
}
为了使用它,我将其注入了Blazor剃刀页面,
@page "/Movies/FetchMovies"
@inject IHttpClientFactory http;
@using System.Text.Json
<MovieList Movies="movies" />
@code{
private List<Movie> movies;
protected override async Task OnInitializedAsync()
{
var client = http.CreateClient("ServerAPI");
movies = await client.GetAsync<List<Movie>>("api/Movies");
//movies = await client.GetFromJsonAsync<List<Movie>>("api/Movies");
}
}
问题是此行movies = await client.GetAsync<List<Movie>>("api/Movies");
出现错误:The non-generic method 'HttpClient.GetAsync(string)' cannot be used with type arguments
我尝试过movies = await client.GetFromJsonAsync<List<Movie>>("api/Movies")
但也遇到错误。
您应该这样做:
@code{
private List<Movie> movies;
protected override async Task OnInitializedAsync()
{
var client = http.CreateClient("ServerAPI");
var response= await client.GetAsync("api/Movies");
response.EnsureSuccessStatusCode();
var responseContent = await response.Content.ReadAsStreamAsync();
movies = await System.Text.Json.JsonSerializer.DeserializeAsync<List<Movie>>
(responseContent,
new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
}
}
希望这可以帮助...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句