如何使用Async/await使用RestSharp

Pur*_*ome 94 .net c# asynchronous restsharp async-await

我正在努力寻找一些使用RestSharp async和的异步C#代码的现代示例await.我知道Haack最近有更新,但我不知道如何使用新方法.

此外,我如何提供取消令牌以便可以取消操作(例如,如果一个人厌倦了等待并按下应用程序UI中的取消按钮).

Eri*_*oom 183

好吧,Haack所指的更新是由我做的:)所以让我告诉你如何使用它,因为它实际上非常简单.以前你有这样的方法ExecuteAsyncGet会返回一个名为的RestSharp自定义类型RestRequestAsyncHandle.作为async/awaiton TaskTask<T>return类型,无法等待此类型.我的pull-request为返回Task<T>实例的现有异步方法添加了重载.这些Task<T>重载在其名称中添加了一个添加的"任务"字符串,例如调用了Task<T>重载.对于每个新的重载,有一种方法不需要指定,而且有一种方法.ExecuteAsyncGetExecuteGetTaskAsync<T>Task<T>CancellationToken

那么现在来看一个如何使用它的实际例子,它还将展示如何使用CancellationToken:

private static async void Main()
{
    var client = new RestClient();
    var request = new RestRequest("http://www.google.com");
    var cancellationTokenSource = new CancellationTokenSource();

    var restResponse = 
        await client.ExecuteTaskAsync(request, cancellationTokenSource.Token);

    // Will output the HTML contents of the requested page
    Console.WriteLine(restResponse.Content); 
}
Run Code Online (Sandbox Code Playgroud)

这将使用ExecuteTaskAsync返回Task<IRestResponse>实例的重载.当它返回a时Task,您可以await在此方法上使用关键字并返回Task<T>返回的类型(在本例中IRestResponse).

你可以在这里找到代码:http://dotnetfiddle.net/tDtKbL

  • 如何映射到我的自定义IRestResponse实现? (3认同)
  • 因为我上次使用Restsharp的同时肩垫也很流行,旋转手机是常态,我们都很喜欢通过我们的Robotics 14.4k调制解调器打造我们喜爱的BBS.答案批准的绿色标记,我会. (2认同)