Как использовать ExecuteAsync в RestSharp для возврата переменной

2

У меня проблемы с возвратом переменной в моем асинхронном методе. Я могу получить код для выполнения, но не могу получить код для возврата адреса электронной почты.

    public async Task<string> GetSignInName (string id)
    {

        RestClient client = new RestClient("https://graph.windows.net/{tenant}/users");
        RestRequest request = new RestRequest($"{id}");
        request.AddParameter("api-version", "1.6");
        request.AddHeader("Authorization", $"Bearer {token}");
        //string emailAddress = await client.ExecuteAsync<rootUser>(request, callback);

        var asyncHandler = client.ExecuteAsync<rootUser>(request, response =>
        {
            CallBack(response.Data.SignInNames);
        });

        return "test"; //should be a variable
    }
Теги:
asynchronous
restsharp

1 ответ

2
Лучший ответ

RestSharp имеет встроенные методы для выполнения асинхронного шаблона на основе задач (TAP). Это вызывается с помощью RestClient.ExecuteTaskAsync<T>. Это даст вам ответ, и свойство response.Data будет иметь десериализованную версию вашего универсального аргумента (rootUser в вашем случае).

public async Task<string> GetSignInName (string id)
{
    RestClient client = new RestClient("https://graph.windows.net/{tenant}/users");
    RestRequest request = new RestRequest($"{id}");
    request.AddParameter("api-version", "1.6");
    request.AddHeader("Authorization", $"Bearer {token}");        
    var response = await client.ExecuteTaskAsync<rootUser>(request);

    if (response.ErrorException != null)
    {
        const string message = "Error retrieving response from Windows Graph API.  Check inner details for more info.";
        var exception = new Exception(message, response.ErrorException);
        throw exception;
    }

    return response.Data.Username;
}

Обратите внимание, что rootUser не является хорошим именем для класса в С#. Наше обычное соглашение - использовать имена классов PascalCase, поэтому это должен быть RootUser.

  • 0
    Мейсон, спасибо за твой ответ. Это очень полезно.
  • 0
    Мейсон, есть ли способ ускорить это? Кажется, что выполнение занимает 10 минут, а раньше занимало 48 секунд?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню