我正在尝试从ASP.NET WebAPI中的控制器方法返回HTTP结果。我正在调用GetAsync
方法,因此我需要使用async-await并返回一个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}");
}
在return await
方法的HttpGet
之后,我收到以下错误消息:
“ 消息”:“发生错误。”,
“ ExceptionMessage ”:“解析值时遇到意外字符:[。路径”,第1行,位置1。”,
“ ExceptionType ”:“ Newtonsoft.Json.JsonReaderException”
有什么建议吗?
答案 0 :(得分:0)
问题出在HTTP调用的返回类型中。这是一个对象列表,而我告诉ReadAsAsync<T>
期望string
。
这解决了它:
[HttpGet]
public async Task<List<MyClass>> MyMethod()
{
var url = @"http://localhost/whatever";
return await HttpGet<List<MyClass>>(url);
}