What is the best way to use HttpClient
and avoid deadlock? I am using the code below, called entirely from synchronous methods, but I concerned it maybe causing a deadlock.
I've done some reading on functions like .ConfigureAwait(false)
, .GetAwaiter()
, .GetResult()
but I am looking for input on the best practice approach.
Not quite exact code, but close enough.
public static bool TryRequest(string url, out response)
{
HttpContent content = new StringContent(json, Encoding.UTF8, "application/json");
using (HttpClient client = new HttpClient())
{
HttpResponseMessage responseMessage = null;
switch (verb)
{
case HttpVerb.Put:
responseMessage = client.PutAsync(url, content).Result;
break;
case HttpVerb.Post:
responseMessage = client.PostAsync(url, content).Result;
break;
case HttpVerb.Delete:
responseMessage = client.DeleteAsync(url).Result;
break;
case HttpVerb.Get:
responseMessage = client.GetAsync(url).Result;
break;
}
if (responseMessage.IsSuccessStatusCode)
{
responseContent = responseMessage.Content.ReadAsStringAsync().Result;
statusCode = responseMessage.StatusCode;
}
}
}