public async Task <APIEndpointExecuterResult> Run(string requestJson, bool includeDateHeader = true) { SendHttpRequestResult result = await APIUtilities.SendRequestAsync( _Uri, _HttpVerb, requestJson, includeDateHeader); APIEndpointExecuterResult returnVal = new APIEndpointExecuterResult(); returnVal.Request = result.request; returnVal.Response = result.response; returnVal.ResponseContent = await result.response.Content.ReadAsStringAsync(); returnVal.ResponseReceivedOnUtc = DateTime.UtcNow; return(returnVal); }
public static async Task <SendHttpRequestResult> SendRequestAsync(string resourceEndpoint, HttpMethod httpVerb, String requestJson, bool includeDateInHeader) { // Generate HttpClient HttpClient client = client = new HttpClient() { BaseAddress = new Uri(ClientState.BaseURI) }; // Generate HttpRequestMessage HttpRequestMessage httpRequest = new HttpRequestMessage(httpVerb, resourceEndpoint); try { // If post or get request, serialize Data Transfer Object if (httpVerb.Equals(HttpMethod.Post) || httpVerb.Equals(HttpMethod.Put)) { httpRequest.Content = new StringContent(requestJson, Encoding.UTF8); httpRequest.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); } // Build Auth Header APIUtilities.BuildAuthHeader(ref httpRequest, includeDateInHeader); HttpResponseMessage httpResponse = await client.SendAsync(httpRequest); return(new SendHttpRequestResult() { request = httpRequest, response = httpResponse }); } catch (Exception) { throw; } finally { httpRequest.Dispose(); client.Dispose(); } }