从WebAPI控制器调用GetAsync



我正试图从ASP.NET WebAPI中的控制器方法返回HTTP结果。我正在调用一个GetAsync方法,所以我需要使用异步等待并返回一个Task<T>

这是控制器方法,当然,为了说明的目的而简化:

[HttpGet]
public async Task<string> MyMethod()
{   
var url = @"http://localhost/whatever";
return await HttpGet<string>(url);  
}

以及HTTP调用方法,其中参数和授权被抽象掉:

private async Task<T> HttpGet<T>(string url)
{
var _httpClient = new HttpClient();
var response = await _httpClient.GetAsync(url);
if (response.IsSuccessStatusCode)
return await response.Content.ReadAsAsync<T>();
throw new Exception($"{response.StatusCode} - {response.RequestMessage}");              
}

我在HttpGet方法中的return await之后得到以下错误:

">消息":"出现错误&";,

">异常消息":"分析值时遇到意外字符:[.Path",第1行,位置1。",

">异常类型":"Newtonsoft.Json.JsonReaderException";

有什么建议吗?

问题出在HTTP调用的返回类型上。这是一个对象列表,而我告诉ReadAsAsync<T>期望string

这解决了问题:

[HttpGet]
public async Task<List<MyClass>> MyMethod()
{   
var url = @"http://localhost/whatever";
return await HttpGet<List<MyClass>>(url);  
}

最新更新