我试图在我的blazor组件中向我的API发出http请求,但我遇到了一些问题,而且我是C#的新手。我使用的是Core 3.1。
Startup.cs:
services.AddHttpClient<MyHttpClient>(c => c.BaseAddress = Configuration["ServerUri"]);
服务文件夹/MyHttpClient.cs:
using System.Net.Http;
using System.Threading.Tasks;
namespace My.Namespace
{
public class MyHttpClient
{
private readonly HttpClient _client;
private string responseString = null;
public MyHttpClient(HttpClient client)
{
_client = client;
}
public async Task<string> HttpGets(string requestUri)
{
{
try
{
HttpResponseMessage response = new HttpResponseMessage();
response = await _client.GetAsync(requestUri);
responseString = await response.Content.ReadAsStringAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
}
return responseString;
}
}
}
组件.razor:
@using Services
@code {
public IEnumerable<MyType> Data;
protected override async Task OnInitializedAsync()
{
Data = await MyHttpClient.HttpGets("/api/getdata"); // I want to do something like this
}
}
我得到这个错误:非静态字段、方法或属性"member"需要对象引用
此外,这有意义吗?或者有更好的方法来处理我的http请求吗?我做错了什么?
您注册了新客户端,但仍需要注入它:
@using Services
@inject MyHttpClient MyHttpClient
@code {
...
}
。。。或者有更好的方法来处理我的http请求吗?
你的类只添加了一些错误处理,我看不出你是如何使它从string
变成IEnumerable<MyType>
的。
考虑在直接使用原始HttpClient的情况下使用MyTypeService类。