【发布时间】:2021-02-28 16:08:49
【问题描述】:
我有以下调用我的 API 的函数
private async void applyMe(int id, string data)
{
string url = $"https://localhost:44382/api/isc/getdata?id=" + id + "&data=" + data;
ApiHelper.InitializeClient();
string _apiResult = await APIProcessor.LoadApi(url);
}
API 助手
public static class ApiHelper
{
public static HttpClient ApiClient { get; set; }
public static void InitializeClient()
{
ApiClient = new HttpClient();
ApiClient.DefaultRequestHeaders.Accept.Clear();
ApiClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/jason"));
}
}
API处理器
public class APIProcessor
{
public static async Task<string> LoadApi(string url)
{
using (HttpResponseMessage response = await ApiHelper.ApiClient.GetAsync(url))
{
if (response.IsSuccessStatusCode)
{
string _apiResult = await response.Content.ReadAsStringAsync();
return _apiResult;
}
else
{
throw new Exception(response.ReasonPhrase);
}
}
}
}
我想在 foreach 循环中调用我的 API,如下所示
using (myEntities _context = new myEntities ())
{
foreach (var item in _context.items.Where(s => s.id >= 1 && s.id <= 500))
{
applyMe(item.id, item.data);
}
}
由于async await,API 尚未调用 :(
请问这个问题怎么解决?
提前致谢
【问题讨论】:
-
await getData(...? -
@Charlieface 忘记API的名字,我改了
-
OK
await applyMe(...函数的名称显然不是我的意思。你需要await一个异步函数 -
@Charlieface 怎么样?
-
一直是
async Task,直到你到达UI事件处理程序,然后使用async void。所以声明private async Task applyMe(...
标签: c# api asynchronous httpclient