private HttpStatusCode HttpPost(string additionalUri, string body, out string responseString) { OAuth2Client.AccessToken ac = _oauth2Client.GetAccessToken(false); if (ac == null) { responseString = null; return(HttpStatusCode.BadRequest); } responseString = string.Empty; HttpClient client = new HttpClient(); client.BaseAddress = _senslinkUri; // We want the response to be JSON. client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _oauth2Client.GetAccessToken(false).access_token); // Build up the data to POST. StringContent content = new StringContent(body); content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); Task <HttpResponseMessage> postTask = null; try { postTask = client.PostAsync(additionalUri, content); postTask.Wait(50000); } catch { } HttpStatusCode responseCode = HttpStatusCode.BadRequest; if (postTask.IsCompleted && !postTask.IsFaulted && !postTask.IsCanceled) { HttpResponseMessage message = postTask.Result; if (message.IsSuccessStatusCode) { Task <string> responseContent = message.Content.ReadAsStringAsync(); responseContent.Wait(5000); if (responseContent.IsCompleted && !postTask.IsFaulted && !postTask.IsCanceled) { if (postTask.Result != null) { responseString = responseContent.Result; } } } responseCode = postTask.Result.StatusCode; } return(responseCode); }