Async Restsharp call

  

public async Task<SparkGrid> GetSkysparkRecordsAsync(string evalExpression)
{
var pointsPostRequest = new RestRequest(_siteApiEndpoint + evalExpression, Method.GET);
pointsPostRequest.AddParameter("text/plain", "", ParameterType.RequestBody);
var response = await ExecuteAsync<RestResponse>(pointsPostRequest);

if (response.StatusCode != HttpStatusCode.OK)
{
throw new Exception($"Request to Skyspark failed! Http Response details: {response}");
}

var records = JsonConvert.DeserializeObject<SparkGrid>(response.Content);

return records;
}


private Task<IRestResponse> SendRequestToSkysparkAsync<T>(RestRequest request) where T : new()
{
var skySparkEndPoint = _skysparkBaseApiUrl;
var restClient = new RestClient(skySparkEndPoint);
var taskCompletionSource = new TaskCompletionSource<IRestResponse>();
var basicAuth = new HttpBasicAuthenticator(_username, _password);
basicAuth.Authenticate(restClient, request);
restClient.ExecuteAsync<T>(request, (response) => taskCompletionSource.SetResult(response.Data));
return taskCompletionSource.Task;
}

  

原文地址:https://www.cnblogs.com/fudaming/p/6761841.html