我正在尝试从MVC应用程序中包装WebApi调用。所以我创建了以下通用方法,
public async Task<T> GetApi<T>(T model, string uri) where T : class
{
using (HttpClient httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri(baseAPIURL);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = httpClient.GetAsync(uri).Result;
if (response.IsSuccessStatusCode)
{
return response.Content.ReadAsAsync<T>().Result;
}
}
return default(T);
}
这里,在哪里使用await关键字使我的方法异步?
答案 0 :(得分:1)
await
代替Task<T>.Result
,Task.Wait
和Task.ContinueWith
:
using (HttpClient httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri(baseAPIURL);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await httpClient.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsAsync<T>();
}
}
return default(T);