Вызов GetAsyn c с контроллера WebAPI - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь вернуть HTTP-результат из метода контроллера в ASP. NET WebAPI. Я вызываю метод GetAsync, поэтому мне нужно использовать asyn c -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 ": "При анализе значения обнаружен неожиданный символ: [. Path '', строка 1, позиция 1. ",

" ExceptionType":" Newtonsoft. Json .JsonReaderException "

Любой совет?

1 Ответ

0 голосов
/ 13 марта 2020

Проблема была в типе возврата HTTP-вызова. Это был список объектов, в то время как я говорил ReadAsAsync<T> ожидать string.

Это решило это:

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