如何在RestSharp中使用GetAsync或PostAsync

时间:2017-09-14 14:24:08

标签: c# restsharp

我无法找到使用GetAsyncPostAsync方法的任何示例。我尝试用以下方法实现它:

private static Task<IRestResponse> GetResultAsync(RestClient client, RestRequest request)
{
    var taskSource = new TaskCompletionSource<IRestResponse>();
    client.GetAsync(request, response =>
    {
        taskSource.SetResult(response);
    });
    return taskSource.Task;
}

我收到错误,因为我不知道必须传递什么RestRequestAsyncHandle参数:

  

代表&#39;行动&lt; IRestResponse,RestRequestAsyncHandle&gt;&#39;不需要1   参数

有人可以告诉我应该传递给RestRequestAsyncHandle吗?

2 个答案:

答案 0 :(得分:2)

如果你想走基于任务的异步路径,那就一直这样做:

private static Task<IRestResponse> GetResultAsync(RestClient client, RestRequest request)
{
    return client.ExecuteGetTaskAsync(request);
}

Kirk很好地解释了你在方法中错过了AsyncHandle的内容,所以我不会在这里重复一遍。

查看github上的代码,他们似乎已经完成了#34;引擎盖&#34;,你尝试了什么。所以我不会重新发明轮子。

答案 1 :(得分:2)

我很难在文档中找到任何具体内容,但看起来您的问题更多的是您希望提供RestRequestAsyncHandle。相反,看起来你需要在回调中“接”一个。 e.g:

client.GetAsync(request, (response, handle) =>
{
    taskSource.SetResult(response);
});

RestRequestAsyncHandle的{​​{3}}表示它包含Abort函数,如果需要,您可以在处理程序中调用该函数。

我无法保证这是否是在RestSharp中使用async的正确方法,但我认为这可以解决您的特定错误。 @ Fildor的回答和评论下面提出了一种更为正确的异步方法。